Androidでレイアウト内にレイアウトを含める方法は?
共通のレイアウトを作成しています。そのレイアウトを別のページに含めたいです。
回答:
編集:ここに正しくリクエストされたコメントのように、いくつかの詳細情報。include
タグを使う
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/yourlayout" />
再利用するレイアウトを含めます。
このリンクをチェックしてください...
<include />
タグで直接実行できるかどうかはわかりませんが、Javaコードを使用して実行できます。以下のPhileo99の回答を参照してくださいれたレイアウトへの参照を取得する方法については、。内容を変更できます。
あなたが含まれている場合ことに注意してくださいandroid:id...
に<include />
、タグ、それが含まれるレイアウト内で定義されたものは何でもIDオーバーライドします。例えば:
<include
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/some_id_if_needed"
layout="@layout/yourlayout" />
yourlayout.xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/some_other_id">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button1" />
</LinearLayout>
次に、このインクルードされたレイアウトを次のようにコードで参照します。
View includedLayout = findViewById(R.id.some_id_if_needed);
Button insideTheIncludedLayout = (Button)includedLayout.findViewById(R.id.button1);
<include />
タグを使用します。
<include
android:id="@+id/some_id_if_needed"
layout="@layout/some_layout"/>
また、再利用可能なUIコンポーネントの作成とレイアウトのマージの記事もお読みください。
レイアウトの再利用に関する公式ドキュメントから
Androidには、小さく再利用可能なインタラクティブ要素を提供するためのさまざまなウィジェットが用意されていますが、特別なレイアウトが必要な大きなコンポーネントを再利用する必要がある場合もあります。完全なレイアウトを効率的に再利用するために、タグを使用して現在のレイアウト内に別のレイアウトを埋め込むことができます。
これは、includeタグを使用して再利用できるheader.xmlファイルです
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="@string/app_name"
android:textColor="#000000" />
</RelativeLayout>
いいえ、使用しません タグをXMLに追加して、別のXMLファイルから別のレイアウトを追加します。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#f0f0f0" >
<include
android:id="@+id/header_VIEW"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
layout="@layout/header" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="#ffffff"
android:orientation="vertical"
android:padding="5dp" >
</LinearLayout>
Because I want to reuse a ProgressBar
どんな問題が来るの?
詳細このリンクの使用 https://developer.android.com/training/improving-layouts/reusing-layouts.html
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Game_logic">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:id="@+id/text1"
android:textStyle="bold"
tools:text="Player " />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_marginLeft="20dp"
android:id="@+id/text2"
tools:text="Player 2" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
ブロッククォート
上記のレイアウトを使用して、他のアクティビティで使用できます
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SinglePlayer">
<include layout="@layout/activity_game_logic"/>
</androidx.constraintlayout.widget.ConstraintLayout>