如何在Android中更改交换机的文本颜色

时间:2012-10-03 10:46:50

标签: android switch-statement android-4.0-ice-cream-sandwich

我正在创建一个使用Android 4.0的应用程序。 我想知道是否可以更改开关中文本的文本颜色。

我已尝试设置文字颜色,但不起作用。

有什么想法吗?

提前致谢!

3 个答案:

答案 0 :(得分:63)

您必须使用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

,则会使用此颜色

您可以在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();
        }
    }

答案 1 :(得分:0)

TextView.setTextColor()采用表示颜色的int(例如0xFFF5DC49)而不是xml文件中的资源ID。在活动中,您可以执行以下操作:

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

在活动之外,您需要一个上下文,例如

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

有关详情,请参阅this

答案 2 :(得分:0)

我认为您必须查看您正在为您的应用程序使用的主题。因为开关的颜色是主题的责任,afaik。所以我建议您看看如何更改主题的设置。或者您可以使用新颜色创建自定义主题。