Android TabWidget установил ошибку цвета фона - PullRequest
0 голосов
/ 19 ноября 2010

Я пытался применить стиль к моему TabWidget.

Я пробовал несколько методов, таких как

для (int i = 0; i

из Как изменить фон виджета со вкладкой Android?

Однако этот код не работает для меня. Я также попытался возиться с некоторыми стилями XML. Самое близкое, что я получил, - это установить Разделитель, однако это заставит весь виджет вкладок превратиться в один сплошной цвет, и вкладки больше не будут рисоваться сверху.

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

Я пробовал этот код для платформ 1.6 и 2.2, но ни один API не работает.

Спасибо

1 Ответ

1 голос
/ 19 ноября 2010

Фон вкладки на самом деле представляет собой NinePatch изображение, установленное в StateListDrawable .Когда вы вызываете setBackgroundColor(), вы заменяете набор StateListDrawable простым цветом, поэтому вся вкладка превращается в этот цвет.Что вам нужно сделать, это на самом деле изменить (или нарисовать свои собственные) изображения вкладки NinePatch, которые являются цветом и стилем, которые вы хотите для каждого состояния (например, фокусировка, нажатие и т. Д.).

Альтернативно, в коде вы можете установить ColorFilter, как описано здесь (getBackground() будет работать как для TabWidget, так и для кнопки), но я бы порекомендовал идти по маршруту NinePatch лично.

...