【问题标题】:Android Master Layout TemplatingAndroid 主布局模板
【发布时间】:2012-03-22 10:52:19
【问题描述】:

嗨,我正在开发安卓系统。

我有一个用于每个活动的布局。

我的意思是我的布局有页脚和页眉。

在每个活动上,页眉和页脚都相同,并且具有相同的操作。

我想为页眉和页脚使用一般布局。

我的意思是在一个activity中,我会把内容区布局放到general layout。

我找到了一些东西,但还不够。

我该怎么做?

是否有这样做的虚拟文档?

抱歉英语不好。

【问题讨论】:

    标签: java android android-layout


    【解决方案1】:

    您所说的是一种称为 Fragments 的新 Android 设计模式。由于 3.0 片段是可以组合形成屏幕的视图之类的小型活动。

    因此,您将创建一个页眉和页脚片段,然后将它们包含在所有需要它们的活动中。

    您可能想要查看的另一种模式是操作栏模式,它用于在屏幕顶部放置一个具有通用内容和功能的栏,类似于您的标题。

    另一种方法是使用 xml 文件来定义页眉和页脚,然后将它们实例化为代码中的视图,并以编程方式将它们添加到内容视图 xml 定义中。这样做的问题是页眉和页脚后面的代码需要在每个控制器中复制。您最好的选择是使用 Fragments,我将在下面放置一些有用的链接:

    http://developer.android.com/guide/topics/ui/actionbar.html

    http://developer.android.com/guide/topics/fundamentals/fragments.html

    http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/

    https://stackoverflow.com/questions/5710573/need-a-fragments-example

    【讨论】:

    • 我使用的是安卓2.1版本
    • 然后使用android兼容包。 Android 的设计方式很容易为 4.0 设计一个应用程序,然后使用该包快速为以前的版本重新设计它。如果您不使用片段,那么以后几乎不可能重构以使用片段,我从经验中知道。 stackoverflow.com/questions/5195697/…
    • 这是一个伟大的想法,但碎片给你更多的力量。我的应用程序是火车时刻表应用程序。所以我的主屏幕有标题、主要功能(搜索、地图、车站等按钮)、收藏夹、附近到达、附近出发和推特火车延误通知的片段。根据屏幕的大小,我会动态隐藏某些片段,以便屏幕在所有级别都有用,然后将其他片段放入其他屏幕中。
    • 片段的另一个好处是可重用性。这个想法是每个片段都会做一些事情,比如显示你的收藏夹或提供一个标题。然后重用你需要做的就是导入片段,没有任何主要的代码重复。所以每个片段都是一个自包含的 UI 和代码块。真的非常有用
    【解决方案2】:

    您可以将包含用于页眉和页脚,或者从基类动态添加它们,但我认为更好的方法是使用单个 Activity 来托管应用程序,然后将 Fragments 用于您的屏幕内容。

    http://android-developers.blogspot.co.uk/2011/02/android-30-fragments-api.html

    【讨论】:

    • 我使用的是安卓2.1版本
    • 这不是问题。 Fragments 包含在 Android 的兼容性包中(查看 SDK 管理器),因此您可以轻松地在 v3.0 之前的 Android 版本中使用 Fragments。除此之外,您还可以使用 www.ActionBarSherlock.com,这是一个库(除了 Fragments 之外)还提供 ActionBar
    • jnastase.alner.net/archive/2011/01/08/… 此代码未使用片段。有问题吗?
    • Android 不是 ASP.NET。我认为没有理由不使用 Fragments,这就是它们的用途。
    • 我会尝试兼容包。它支持 v4 中的所有内容吗?
    【解决方案3】:

    我不反对碎片,是的,它们是要走的路,但对于初学者的 android 开发人员,你可以通过<include>s 和基本活动来实现你想要做的事情。

    这个article 很好地解释了<include>s 的使用,但总而言之,您可以拥有一个布局xml 文件,您可以将其“包含”到另一个布局中,而不是一遍又一遍地重写相同的内容。

    对于页眉和页脚的功能(假设它们在单击时执行某些操作),您可以创建一个可以扩展的基础 Activity,而不是普通的 android Activity。 在此基础活动中定义页眉和页脚点击的逻辑,例如使用此示例代码:

    public class MyBaseActivity extends Activity {
    ...
    public void onHeaderClick(View view) {
    // when header is clicked, do this.
    }
    public void onFooterClick(View view) {
    // when footer is clicked, do this.
    

    在您的布局(作为单独 xml 的布局)中,将 onClick 属性添加到您的页眉/页脚,在基本活动中分配方法的名称。

    比如

    android:onClick="onHeaderClick"
    

    然后,只需为所有具有页眉和页脚的活动扩展 MyBaseActivity。

    【讨论】:

    • @Josepus:我没有实现这个问题中提出的任何问题。但我喜欢你的 BaseActivity 概念。你有任何关于你的概念的链接吗?因为想到你的概念让我产生了一些疑问。
    • 这实际上是一个自我发现的想法,但是当我在 stackoverflow 上阅读相同的问题时,出现了类似的解决方案(或者更确切地说,相同的确切解决方案)。 (虽然没有链接。尝试搜索“android base activity”)重要的是,它有效:)
    【解决方案4】:

    检查this,您确实可以随时重复使用您的布局。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多