3

の行に使用するレイアウトがありますListView。ある場所では、レイアウトを「明るい」スタイルで表示する必要があり、ある場所では「暗い」スタイルで表示する必要があります。Androidのスタイルやテーマなどを使用してこれを実現するにはどうすればよいですか?

スタイルの概念は理解できますが、それは単一の要素のためだけのもののようです。これらを使用すると、スタイルを使用して要素に適用される一連のプロパティを定義できます。私がやりたいのは、次のプロパティを定義することです。

  • タイトルテキストの色(TextView1に適用)
  • 字幕テキストの色(TextView2に適用)
  • 背景(親レイアウトに適用)
4

1 に答える 1

5

プログラムでスタイルを設定することはできないので、テーマを作成していて、このテーマを必要なアクティビティに適用しています。

属性を作成する

スタイリング可能な属性をres/values/attrs.xml次のように追加します。

<declare-styleable name="MyTheme">
    <attr name="titleColor" format="color" />
    <attr name="subtitleColor" format="color" />
    <attr name="backgroundDrawable" format="reference" />
</declare-styleable>

MyTheme何にも関係する必要はないようです。属性の名前空間にすぎないと思います。

スタイルを作成する

res/values/styles.xml

<style name="MyTheme.LightRows">
    <item name="titleColor">@color/black</item>
    <item name="subtitleColor">@color/grey</item>
    <item name="backgroundDrawable">@drawable/cell_bg</item>
</style>

アクティビティにスタイルを適用する

AndroidManifest.xml

<activity android:name=".view.activity.LightActivity" 
          android:theme="@style/MyTheme.LightRows" />

参照スタイル属性

リスト行(またはその他)に使用されるレイアウト:

 android:textColor="?attr/titleColor"
于 2012-08-27T07:38:57.383 に答える