7

color state list リソースで、themed color 属性を使用できないことは確認されていますか?

私はかなり完璧に動作する次のコードを持っています。

color/home_menu_text_view_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#ffffffff" />    <!-- pressed -->
    <item android:state_focused="true" android:color="#ffffffff" />    <!-- focused -->
    <item android:state_selected="true" android:color="#ffffffff" />   <!-- selected -->
    <item android:color="#ff000000" />                                 <!-- default -->
</selector>

レイアウト/home_menu_row.xml

<!-- Use duplicateParentState, so that we can receive click event from parent linear layout -->
<TextView
    android:id="@+id/name"
    android:gravity="center_vertical"
    android:padding="5dp"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="48dp"
    android:duplicateParentState="true"        
    android:textColor="@color/home_menu_text_view_selector"
    android:drawablePadding="10dp" />

ただし、コードを次のように調整すると、機能しなくなります。デフォルトモードでは、希望の色に変化しなくなりました。?android:attr/textColorPrimary私の場合は黒色(#ff000000)だとします。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#ffffffff" />    <!-- pressed -->
    <item android:state_focused="true" android:color="#ffffffff" />    <!-- focused -->
    <item android:state_selected="true" android:color="#ffffffff" />   <!-- selected -->
    <item android:color="?android:attr/textColorPrimary" />            <!-- default -->
</selector>

誰かが同様の質問をしました セレクター リソースはスタイルで定義された色を使用できますか? 私のようですが、具体的な答えはまだありません。したがって、私はこのボールをもう一度投げます。:)

4

1 に答える 1

3

受け取ったコメントに従って編集

参考までに、これは API 23 で修正されていると思います。カラー状態リスト内で属性を宣言できるようになりました。– アレックス・ロックウッド

古い回答

英語の専門知識が不足しているからではなく、コア Android の専門知識が不足しているため、これを説明する言葉が不足しています。

Android Attribute (attr)そしてAndroid Color両者は完全に別物です。attr は色の値も定義しているという理由だけで、それを単一の形式 color と関連付けることはできません

attrビュー、その参照、色、寸法、タイプなどに関する他の多くのことを定義するために使用されます。形式を渡さない場合でも、スタイル属性を適用するために使用する形式のデフォルト値が必要です。

例:ImageViewを使用してsrcとして設定することで画像を表示したり、1つのLinearLayoutを取得して背景に設定することで画像を表示したりできます。ImageView の代わりに Layout を使用して画像を表示している場合、ImageView でのみ可能である center crop,fitXY のような自動スケーリングを行うためにそれを受け入れることはできません。

書き込み中に同じ方法で色を渡すことができます。これは 16 進数のカラー コードまたは定義された色のいずれかですが、セレクター項目のandroid:color は色の値のみを受け入れ、attr にはデフォルトでタイプなどの他の形式があるため、as をselector設定することはできません。attrcolor

単一行の回答: attr は色ではありません。はい、色という 1 つの形式がありますが、attr に含まれる形式は色だけではないため、色の代わりに attr を使用することはできません。

于 2013-03-28T06:06:01.903 に答える