Как изменить цвет текста переключателя в Android

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

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

Есть идеи?

Заранее спасибо!

3 ответа

Решение

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

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

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

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

вне действия вам нужен контекст, например.

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

Для получения дополнительной информации обратитесь к

Другие вопросы по тегам