Как изменить цвет текста в Android

Я создаю приложение, которое использует Android 4.0. Мне интересно, можно ли изменить цвет текста текста в коммутаторе.

Я попытался установить цвет текста, но он не работает.

Любые идеи?

Спасибо заранее!

Ответы

Ответ 1

Вы должны использовать атрибут 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 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();
        }
    }

Ответ 2

TextView.setTextColor() принимает int, представляющий цвет (например, 0xFFF5DC49), а не идентификатор ресурса из xml файла. В упражнении вы можете сделать что-то вроде:

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

за пределами действия вам понадобится Контекст, например.

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

Подробнее см. this

Ответ 3

Я думаю, вам нужно взглянуть на тему, которую вы используете для своего приложения. Потому что цвет переключателя несет ответственность за тему, afaik. Поэтому я бы предложил вам посмотреть, как вы можете изменить настройки темы. Или вы можете создать пользовательскую тему с новыми цветами.