ページの上部に WebView と非表示のメニューを含むアプリを作成しています (画面をダブルクリックした場合にのみ表示されます)。そのメニューは、内部にボタンがある単純な線形レイアウトです。各ボタンは異なるアクティビティを開始します。メニューがすべてのアクティビティで機能するようにしたいと思います。(見えない) メニューが一番上にあり、画面の残りの部分には他のアクティビティ用のスペースがあるメイン レイアウトを作成することを考えていました。各アクティビティにも独自のレイアウトが必要です。メニューを一番上にしてレイアウトを作成し、残りのスペースを線形レイアウトにすることもできます。次に、その線形レイアウト内で各アクティビティを呼び出します。それは可能ですか?可能であれば、どのように行うのですか?どんな助けでも大歓迎です。
3 に答える
私が理解しているように、あなたはそのようにすることができます:
1- メニューの LinearLayout を拡張するクラスを作成します。
2-クラスを作成してアクティビティを拡張し、その中にそのメニュービューを作成します
3-他のすべてのアクティビティは、手順2で作成したアクティビティを拡張する必要があります
。4-他のすべてのアクティビティonStart内で、メニュービューを画面に追加する必要があります
しかし、ナビゲーション ドロワーを使用することを強くお勧めします。
http://developer.android.com/design/patterns/navigation-drawer.htmlおよび
http://developer.android.com/training/implementing-navigation/nav-drawer.html
これを実現するActivity
には、非表示のレイアウトを上部に配置し、次のFrameLayout
コンテナのコンテナとして作成しますFragments
。
MainActivit.java
public class MainActivity(){
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main)
}
}
およびactivity_main.xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/invisible_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" >
<!-- your other views here -->
</LinearLayout>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/invisible_menu" />
</RelativeLayout>
それはMainActivity
あなたのすべてを保持するものFragments
です。アプリで使用するには、 Android Developers - FragmentsFragments
をチェックする必要があります
編集:Fragments
コードを介して追加/置換する方法は次のとおりです。
Fragment
最初の単純な呼び出しを追加するには:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
ExampleFragment fragment = new ExampleFragment();
transaction.add(R.id.fragment_container, fragment);
transaction.commit();
// Commit the transaction
transaction.commit();
その後、コンテンツを別の に置き換えるには、Fragment
で次のようにする必要がありますonClick
。
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
したがって、基本的には and を使用する必要がFragmentTransaction.add()
ありFragmentTransaction.replace()
ます。
古いバージョンの Android をサポートする (フラグメントを回避する) 場合は、 を使用し<include>
て各アクティビティにメニュー レイアウトを追加できます。このコードを別のクラスにカプセル化することはできますが、各アクティビティの onCreate でクリック イベントを接続する必要があります。