0

我一直在尝试将样式应用于我的 TabWidget。

我尝试了几种方法,例如

for(int i=0;i < tabHost.getTabWidget().getChildCount();i++) tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#7392B5"));

如何更改 Android 选项卡小部件的背景?

但是,此代码对我不起作用。我也尝试过使用一些 XML 样式。我得到的最接近的是设置 Divider,但是这会使整个选项卡小部件变成一种纯色,并且选项卡不再绘制在顶部。

请帮忙。Mark 的书只涉及设置选项卡的图标,而不是更改颜色。我觉得这应该很简单,但是 TabWidgets 和 Hosts 让一切变得更加困难。

我已经尝试过针对 1.6 和 2.2 平台的代码,但是这两个 API 都不起作用。

谢谢

4

1 回答 1

1

选项卡的背景实际上是一个NinePatch图像,设置为StateListDrawable。当您调用 时setBackgroundColor(),您将用一种简单的颜色替换设置的 StateListDrawable,因此整个选项卡都会变成该颜色。您需要做的是实际修改(或绘制您自己的)NinePatch 选项卡图像,这些图像是您想要的每种状态(例如,聚焦、按下等)的颜色和样式。

或者,在代码中,您可以按照此处所述设置 ColorFilter (getBackground()适用于 TabWidget 和按钮),但我建议您亲自使用 NinePatch 路线。

于 2010-11-18T22:30:25.670 回答