gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:25:28 25 4
gpt4 key购买 nike

我正在尝试创建一个真正复杂的用户界面,用于与专有产品集成(它目前是基于网络的,并且完全是黑客攻击)。每个屏幕/ 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com