Java 如何构建Android版的定制JPanel(又名视图)

Java 如何构建Android版的定制JPanel(又名视图),java,android,swing,user-interface,Java,Android,Swing,User Interface,我正在尝试创建一个真正涉及到的UI,以便与专有产品集成(目前它是基于web的,完全是一种黑客行为)。每个屏幕/视图都有相同的外观和感觉,在每个页面的相同位置都有相同的2-3个按钮。这只是显示变化的一部分 如果这是swing,我将定义一个JPanel,组成除此中心组件以外的所有组件,然后创建所述面板的实例,为每个实例提供不同的字段 我想将这个UI流中90%的公共部分表示为一个视图,并只填充一些空白 我可以这样做吗?我该怎么做?请不要仇恨。Android新手总数(尽管是经验丰富的Java老手) 我可

我正在尝试创建一个真正涉及到的UI,以便与专有产品集成(目前它是基于web的,完全是一种黑客行为)。每个屏幕/视图都有相同的外观和感觉,在每个页面的相同位置都有相同的2-3个按钮。这只是显示变化的一部分

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

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

我可以这样做吗?我该怎么做?请不要仇恨。Android新手总数(尽管是经验丰富的Java老手)

我可以这样做吗

当然!然而,我不会将其描述为“完全的Android新手”类型的问题,就像在那种环境中它不会是“完全的Swing新手”类型的问题一样

我该怎么做

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

  • 如果您希望每个“屏幕/视图”都是一个
    活动
    ,您可以在
    setContentView()
    中使用前面提到的布局文件,然后手动膨胀(或直接在Java中实例化)任何“空白”。您可以在
    FrameLayout
    上调用
    addView()
    ,以“填充空白”。如果需要,大多数逻辑可以捆绑在基类中,子类覆盖一些
    gimmetheblanksplese()
    方法,该方法提供要注入
    FrameLayout
    的内容

  • 如果您希望每个“屏幕/视图”都是一个
    片段
    ,您可以在
    onCreateView()
    中使用前面提到的布局文件,然后手动膨胀(或直接在Java中实例化)任何“空白”。同样,您可以通过
    addView()
    将这些内容注入到
    FrameLayout
    中,并且这种代码的大部分可以在抽象基类中实现

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

唯一简单的解决方案是,如果可以在~1布局文件中定义“此UI流的90%公共部分”,则可以使用
标记来组合布局。您将拥有一个带有公共元素的公共布局,该布局将包含在每个“屏幕/视图”布局中,并在运行时使用。同样,您可能有一个抽象的基础
活动
片段
,了解常见的东西。然而,如果“90%”最终被分割到一整堆布局文件中,这会变得很混乱,因为XML和定位是如何工作的