9

私は最近、マージとインクルードについて学んでいますが、私にも答えがわからないような質問があります。複数のレイアウトに追加したいヘッダー コンポーネントを定義するレイアウトがあるとします。ただし、インクルードの使用ごとに各ヘッダーのタイトルまたはアイコンを変更したいと考えています。たとえば、次のレイアウトがあるとします。

<RelativeLayout android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                style="@style/menu_header">

    <Button android:id="@+id/backButton"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/button"
            android:text="@string/back"/>

    <TextView style="@style/headerTitle"
              android:layout_centerInParent="true"
              android:text="${title}"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content"/>
</RelativeLayout>

次に、次を使用して他のレイアウトに含めることができます。

<LinearLayout ...>
   <include android:id="@+id/searchHeader" layout="@layout/shared_header" title="Search"/>
   ...
</LinearLayout>

ルート要素の任意の layout_* 属性を変更できることはわかっていますが、View の独自のサブクラスを作成せずに、この例の「タイトル」など、レイアウトに代入される他の属性を定義できますか、declare-styleable を追加します値/リソースなどの定義?

このようなものを使用すると、再利用可能なビューの作成が非常に簡単になりますが、マージ + インクルードができるかどうかを示す証拠が見つからないようです。

4

1 に答える 1

5

答えはノーです。残念ながら、Android はそれほど強力ではありません。ViewGroup の独自の拡張機能を作成し、さらにコードを記述する必要があります。

于 2011-07-26T01:12:17.993 に答える