私はAndroid2.1のアプリをターゲットにしています。私は3つのセクションを含むレイアウトを持っています。ヘッダー、本体、フッター。フッターは、アプリケーションのライフサイクル全体を通じて同じままです。フッターには、ユーザーが選択できる4つのオプションがあります(4つのタブなど)。ユーザーがフッターの各オプションを選択すると、本体のコンテンツを変更する必要があります。また、ユーザーが本体のUIを操作する場合は、本体のみのコンテンツを変更する必要があります(アクティビティをアクティビティに置き換えるなど)。また、フッターでのユーザー選択は、ユーザーがフッターで別のオプションを選択するまで強調表示されたままにする必要があります。ほとんどの場合、同じタブ内でアクティビティを起動する必要がありますが、タブは下に配置されます。多くの人がactivitygroupの使用を提案していますが、非推奨になっているため、どうすればこれを実行できますか?
3 に答える
2.1以降のような下位バージョンからのサポートが必要な場合は、私の方法を提案できます。私は常にトレイ(あなたの場合はフッター)に個別のXMLレイアウトを使用します。たとえば、(res / layout / trail.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 を継承し、現在のレイアウトにフッター メニュー レイアウトを含めるだけで、必要なアクティビティでメニューを使用できるようになります。