我可以这样做吗?
当然!但是,我不会将其描述为“完全的 Android 菜鸟”之类的问题,就像在那种环境中它不会是“完全的 Swing 菜鸟”之类的问题一样。
我怎么做?
有几种可能的方法。最简单的解决方案是定义一个定义整个 UI 的布局资源文件,其中 aFrameLayout
作为“一些空白”最终会去的占位符。然后,在运行时,当您使用该布局时,您将通过在其中添加一些内容来“填补空白” FrameLayout
:
如果您希望每个“屏幕/视图”都是一个Activity
,您将使用上述布局文件 in setContentView()
,然后手动膨胀(或直接在 Java 中实例化)任何“一些空白”。你会呼吁addView()
用FrameLayout
你膨胀的任何东西来“填补空白”。如果您愿意,大多数逻辑可以捆绑在一个基类中,子类覆盖一些gimmeTheBlanksPlease()
方法,该方法提供要注入FrameLayout
.
如果您希望每个“屏幕/视图”为Fragment
,您将使用上述布局文件 in onCreateView()
,然后手动膨胀(或直接在 Java 中实例化)任何“一些空白”。同样,您将把这些东西倒入FrameLayout
viaaddView()
中,并且大部分代码都可以在抽象基类中实现。
还有更复杂的解决方案(例如 custom ViewGroup
)。
唯一更简单的解决方案是,如果可以在 ~1 个布局文件中定义“此 UI 流的 90% 通用部分”,则可以使用<include>
标签来组合布局。您将拥有一个带有通用元素的通用布局,该布局将包含在每个“屏幕/视图”布局中并在运行时使用。同样,你可能有一个抽象的基础Activity
或者Fragment
知道常见的东西。但是,如果“90%”最终会被拆分到一大堆布局文件中,这会变得很混乱,这仅仅是因为 XML 和定位的工作方式。