java - 如何编写自定义 JPanel(又名 View )的 Android 等效项

标签 java android swing user-interface

我正在尝试创建一个真正复杂的用户界面,用于与专有产品集成(它目前是基于网络的,并且完全是黑客攻击)。每个屏幕/ View 都有相同的外观和感觉,每个页面上相同位置有相同的 2-3 个按钮。这只是显示变化的一部分。

如果这是 swing,我将定义一个 JPanel,组合除此中心组件之外的所有内容,然后创建所述面板的实例,为每个实例提供不同的字段。

我想将此 UI 流程的 90% 常见部分表示为单个 View ,并仅填充一些空白。

我可以这样做吗?我怎么做?请不要有仇恨者。完全的 Android 菜鸟(不过是经验丰富的 Java 专家)

最佳答案

Can I do that?

当然!不过,我不会将其描述为“完全 Android 菜鸟”之类的问题,就像在该环境中它不会是“完全 Swing 菜鸟”之类的问题一样。

How do I do that?

有几种可能的方法。最简单的解决方案是定义一个定义整个UI的布局资源文件,带有 FrameLayout作为“一些空白”最终会去的占位符。然后,在运行时,当您使用该布局时,您将通过在 FrameLayout 中放入一些内容来“填补空白”。 :

  • 如果您希望每个“屏幕/ View ”都是 Activity ,您可以在 setContentView() 中使用上述布局文件,然后手动膨胀(或直接在 Java 中实例化)无论“一些空白”是什么。您可以调用addView()关于FrameLayout用你膨胀的任何东西“填补空白”。如果您愿意,大部分逻辑可以 bundle 在基类中,子类覆盖一些 gimmeTheBlanksPlease()提供要倒入 FrameLayout 中的内容的方法.

  • 如果您希望每个“屏幕/ View ”都是 Fragment ,您可以在 onCreateView() 中使用上述布局文件,然后手动膨胀(或直接在 Java 中实例化)无论“一些空白”是什么。同样,你可以将这些东西倒入 FrameLayout 中。通过addView() ,并且大部分代码可以在抽象基类中实现。

还有更复杂的解决方案(例如自定义 ViewGroup )。

唯一更简单的解决方案是如果“此 UI 流程的 90% 公共(public)部分”可以在 ~1 个布局文件中定义,则可以使用 <include>用于布局组合的标签。您将拥有一个包含公共(public)元素的公共(public)布局,该布局将包含在每个“屏幕/ View ”布局中并在运行时使用。同样,您可能有一个抽象基 ActivityFragment知道常见的事情。然而,如果“90%”最终会因为 XML 和定位的工作方式而被分割到一大堆布局文件中,那么事情就会变得困惑。

关于java - 如何编写自定义 JPanel(又名 View )的 Android 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203423/

相关文章:

java - 当配置影响方法结果时进行适当的测试?

java - 在java中使用正则表达式查找和替换url

android - 在 xml 中声明时自定义 View 不起作用

java - 更改单个附加的 TextView 文本对齐方式

java - 如何使用for语句java打开另一个程序?

Java 事件 KeyPress 键盘

java - 从 JComboBox 获取值

java - 使用 Rest Assured 获取重定向的 url?

java - JunitParamsRunner 测试

android - 在 android 的 Arraylist 中设置可绘制图像时出现问题