0

我正在尝试创建一个真正涉及的 UI 以与专有产品集成(它目前是基于网络的并且完全是 hack)。每个屏幕/视图都具有相同的外观和感觉,在每个页面的相同位置有相同的 2-3 个按钮。这只是显示更改的一部分。

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

我想将这个 UI 流的 90% 的公共部分表示为一个视图,并只填写一些空白。

我可以这样做吗?我怎么做?请不要仇恨。总 Android 菜鸟(不过是经验丰富的 Java 兽医)

4

1 回答 1

1

我可以这样做吗?

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

我怎么做?

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

  • 如果您希望每个“屏幕/视图”都是一个Activity,您将使用上述布局文件 in setContentView(),然后手动膨胀(或直接在 Java 中实例化)任何“一些空白”。你会呼吁addView()FrameLayout你膨胀的任何东西来“填补空白”。如果您愿意,大多数逻辑可以捆绑在一个基类中,子类覆盖一些gimmeTheBlanksPlease()方法,该方法提供要注入FrameLayout.

  • 如果您希望每个“屏幕/视图”为Fragment,您将使用上述布局文件 in onCreateView(),然后手动膨胀(或直接在 Java 中实例化)任何“一些空白”。同样,您将把这些东西倒入FrameLayoutviaaddView()中,并且大部分代码都可以在抽象基类中实现。

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

唯一更简单的解决方案是,如果可以在 ~1 个布局文件中定义“此 UI 流的 90% 通用部分”,则可以使用<include>标签来组合布局。您将拥有一个带有通用元素的通用布局,该布局将包含在每个“屏幕/视图”布局中并在运行时使用。同样,你可能有一个抽象的基础Activity或者Fragment知道常见的东西。但是,如果“90%”最终会被拆分到一大堆布局文件中,这会变得很混乱,这仅仅是因为 XML 和定位的工作方式。

于 2013-06-20T00:29:38.067 回答