web-dev-qa-db-ja.com

スイッチのテキストの色を変更する方法Android

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

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

何か案は?

前もって感謝します!

18
Robin.v

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);

...そしてsetTextColorSwitchについて-あなたのSwitchTextAppearanceスタイルがtextColorを提供しない場合、この色が使用されます

SwitchsetSwitchTextAppearanceソースコードで確認できます。

    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();
        }
    }
63
imbryk

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

0
ndsmyter

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

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

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

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

詳細については this を参照してください

0
harshit