18

Android 4.0 を使用するアプリケーションを作成しています。スイッチ内のテキストのテキストの色を変更できるかどうか疑問に思っています。

テキストの色を設定しようとしましたが、うまくいきません。

何か案は?

前もって感謝します!

4

3 に答える 3

66

android:switchTextAppearance次のような属性を使用する必要があります。

android:switchTextAppearance="@style/SwitchTextAppearance"

そしてスタイルで:

<style name="SwitchTextAppearance" parent="@android:style/TextAppearance.Holo.Small">
    <item name="android:textColor">@color/my_switch_color</item>
</style>

上記のスタイルを使用して、コードで行うこともできます。

mySwitch.setSwitchTextAppearance(getActivity(), R.style.SwitchTextAppearance);

...そして同様にsetTextColor-Switchこの色は、SwitchTextAppearanceスタイルが提供しない場合に使用されますtextColor

Switch次のソースコードで確認できますsetSwitchTextAppearance

    ColorStateList colors;
    int ts;

    colors = appearance.getColorStateList(com.android.internal.R.styleable.
            TextAppearance_textColor);
    if (colors != null) {
        mTextColors = colors;
    } else {
        // If no color set in TextAppearance, default to the view's textColor
        mTextColors = getTextColors();
    }

    ts = appearance.getDimensionPixelSize(com.android.internal.R.styleable.
            TextAppearance_textSize, 0);
    if (ts != 0) {
        if (ts != mTextPaint.getTextSize()) {
            mTextPaint.setTextSize(ts);
            requestLayout();
        }
    }
于 2013-03-29T09:26:05.340 に答える
1

アプリケーションに使用しているテーマを確認する必要があると思います。スイッチの色はテーマの責任だからです。そのため、テーマの設定を変更する方法を確認することをお勧めします。または、新しい色でカスタム テーマを作成することもできます。

于 2012-10-03T12:44:02.563 に答える
0

TextView.setTextColor() は、xml ファイルのリソース ID ではなく、色を表す int (例: 0xFFF5DC49) を取ります。アクティビティでは、次のようなことができます。

textView1.setTextColor(getResources().getColor(R.color.mycolor))

アクティビティの外では、コンテキストが必要になります。

textView1.setTextColor(context.getResources().getColor(R.color.mycolor))

詳細については、これを参照してください

于 2012-10-03T10:53:44.017 に答える