Как изменить цвет текста переключателя в 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))
Для получения дополнительной информации обратитесь к