我正在尝试创建一个真正复杂的用户界面,用于与专有产品集成(它目前是基于网络的,并且完全是黑客攻击)。每个屏幕/ View 都有相同的外观和感觉,每个页面上相同位置有相同的 2-3 个按钮。这只是显示变化的一部分。
如果这是 swing,我将定义一个 JPanel,组合除此中心组件之外的所有内容,然后创建所述面板的实例,为每个实例提供不同的字段。
我想将此 UI 流程的 90% 常见部分表示为单个 View ,并仅填充一些空白。
我可以这样做吗?我怎么做?请不要有仇恨者。完全的 Android 菜鸟(不过是经验丰富的 Java 专家)
最佳答案
当然!不过,我不会将其描述为“完全 Android 菜鸟”之类的问题,就像在该环境中它不会是“完全 Swing 菜鸟”之类的问题一样。Can I do that?
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 ”布局中并在运行时使用。同样,您可能有一个抽象基 Activity
或Fragment
知道常见的事情。然而,如果“90%”最终会因为 XML 和定位的工作方式而被分割到一大堆布局文件中,那么事情就会变得困惑。
关于java - 如何编写自定义 JPanel(又名 View )的 Android 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203423/