我的目标是 android 2.1 上的应用程序。我有一个包含三个部分的布局。页眉、主体和页脚。页脚在整个应用程序生命周期中保持不变。页脚有四个选项供用户选择(如四个选项卡)。当用户选择页脚中的每个选项时,主体中的内容必须更改。并且当用户在主体中与 UI 交互时,只需要更改主体的内容(如活动替换活动)。并且页脚中的用户选择必须保持突出显示,直到用户在页脚中选择另一个选项。我几乎需要在同一个选项卡中启动活动,但选项卡位于下方。很多人建议使用活动组,但由于它已被弃用,我该怎么做呢?
3 回答
如果您想获得 2.1 和更高版本等较低版本的支持,我可以提出我的建议。我总是为托盘使用单独的 XML 布局(在您的情况下为页脚),例如(res/layout/tray.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainMenu"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#EEEEEE"
android:gravity="bottom|fill_horizontal"
android:orientation="horizontal"
android:padding="5dp" >
<ImageView
android:id="@+id/addBtn"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/add" android:layout_weight="0.2"/>
<ImageView
android:id="@+id/catalogBtn"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/catalog" android:layout_weight="0.2"/>
<ImageView
android:id="@+id/searchBtn"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/search" android:layout_weight="0.2"/>
<ImageView
android:id="@+id/settingsBtn"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/settings" android:layout_weight="0.2"/>
<ImageView
android:id="@+id/infoBtn"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/info" android:layout_weight="0.2"/>
</LinearLayout>
并将其包含在我需要的每个活动中:
<include layout="@layout/tray" android:id="@+id/tray" />
之后,我可以在java代码中按ID隐藏/显示托盘中的一些按钮,或者用另一种颜色选择其中一些按钮......
另一种可能的方法是使用片段而不是每个内容页面的完整活动。片段很像活动,只是它们需要嵌入到要显示的活动中,并且它们使您可以自由更改活动一部分的内容(即,将一个片段交换为另一个片段),这意味着您可以让活动的另一部分保持不变 - 例如用于在这些片段之间切换的选项卡。一个不错的好处是在另一个活动中重用该内容页面非常容易,如果您选择创建一个适合平板电脑的版本,您可以轻松地为现有片段构建更复杂的视图。
将ViewPager与某种类型的页面指示器一起使用,例如此处的选项卡指示器,您可以拥有一个活动片段并轻松地在它们之间切换。
由于您的目标是 2.1,因此您需要使用 android支持库来支持片段。
要在所有活动中显示页脚菜单,您可以创建自定义布局 - 页脚的布局 - 并将其包含在每个活动中,或者更具体地说,将其包含在每个活动的布局中<include />
此外,您的所有活动都应该有一个父活动,让它成为BaseActivity
,您将在其中为您的页脚菜单提供适当的操作。
然后,您只需要继承 BaseActivity 并将页脚菜单布局包含到您当前的布局中,即可使该菜单可用于您想要的任何 Activity。