19

color.xml で次の色を定義しています。

<color name="gold">#d49e43</color>
<color name="gold_disabled">#80d49e43</color>

そして次のテーマ。

<style name="Theme.Example" parent="@style/Theme.Sherlock">       
    <item name="android:textColor">@color/gold</item>
</style>

私の SettingsActivity には、CheckBoxPreference とそれに依存する Preference があります。CheckBoxPreference がオフの場合、Preference は無効になりますが、設定したカスタムの金色のテキストの色により、デフォルトの色のように「グレー表示」されません。これを XML で変更するにはどうすればよいですか? 私は設定しようとしました:

    <item name="android:textColorPrimaryDisableOnly">@color/gold_disabled</item>
    <item name="android:textColorPrimaryInverseDisableOnly">@color/gold_disabled</item>
    <item name="android:textColorPrimaryNoDisable">@color/gold_disabled</item>
    <item name="android:textColorSecondaryNoDisable">@color/gold_disabled</item>
    <item name="android:textColorPrimaryInverseNoDisable">@color/gold_disabled</item>
    <item name="android:textColorSecondaryInverseNoDisable">@color/gold_disabled</item>

しかし、何も機能していないようです。

4

3 に答える 3

3

私はこれを多かれ少なかれ偶然に理解しましたが、Preference をサブクラス化して onBindView() をオーバーライドすると、設定が無効になっているときに「グレー表示」効果を実現できます。

@Override
protected void onBindView(View view) {
    // TODO Auto-generated method stub
    super.onBindView(view);
    TextView title = (TextView)view.findViewById(android.R.id.title);
    TextView summary = (TextView)view.findViewById(android.R.id.summary);

    if (title.isEnabled()) {
        title.setTextColor(getContext().getResources().getColor(R.color.gold));
    }
    else {
        title.setTextColor(getContext().getResources().getColor(R.color.gold_disabled));
    }

    if (summary.isEnabled()) {
        summary.setTextColor(getContext().getResources().getColor(R.color.orange));
    }
    else {
        summary.setTextColor(getContext().getResources().getColor(R.color.orange_disabled));
    }
}
于 2013-07-22T04:06:15.057 に答える