如何更改 Android 选项卡小部件的背景?
我的类扩展了 TabActivity
TabHost mTabHost = getTabHost();
TabHost.TabSpec tab1 =mTabHost.newTabSpec("tab1");
TabHost.TabSpec tab2 =mTabHost.newTabSpec("tab2");
tab1 .setIndicator("title tab1");
tab2 .setIndicator("title tab2");
mTabHost.addTab(tab1);mTabHost.addTab(tab2);
TabHost.setCurrentTab(0 or 1)
谁能指导我如何更改所选选项卡的背景图像或颜色?
My class extends extends TabActivity
TabHost mTabHost = getTabHost();
TabHost.TabSpec tab1 =mTabHost.newTabSpec("tab1");
TabHost.TabSpec tab2 =mTabHost.newTabSpec("tab2");
tab1 .setIndicator("title tab1");
tab2 .setIndicator("title tab2");
mTabHost.addTab(tab1);mTabHost.addTab(tab2);
TabHost.setCurrentTab(0 or 1)
Can anybody guide me how do I change the background image or color of selected tab?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这将设置您的选项卡颜色:
如果您将其放在 onTabChangedListener() 中,它将为所选选项卡保留正确的颜色。
This will set your tab colors:
and if you put it within the onTabChangedListener(), it will keep the correct color for selected tabs.
正如 mbaird 提到的,更好的解决方案是将 background 与选择器一起使用,这样您就不必检查
onTabChanged
并进行手动更新。最少的代码如下:其中
tab_bg
是带有选择器的 xml 可绘制对象:对于完整的选项卡自定义,我将添加使用自定义主题更改选项卡文本样式的代码。将其添加到
styles.xml
:要使用此主题,请在 AndroidManifest.xml 中定义它:
现在您拥有具有自定义背景和自定义文本样式<的选项卡小部件< /强>。
As mbaird mentioned, the better solution is to use background with selector, so you don't have to check
onTabChanged
and do manual update. The minimal code is here:Where
tab_bg
is an xml drawable with selector:For the full Tab customization I will add the code for changing tab text style using custom theme. Add this to
styles.xml
:To use this theme, define it in AndroidManifest.xml:
And now you have tab widgets with custom background and custom text style.
如果注册 TabHost.OnTabChanged 事件并调用 mTabHost.getCurrentTabView() 获取 View,然后调用 view.setBackgroundResource() 会怎么样?
What if you register for TabHost.OnTabChanged events and call mTabHost.getCurrentTabView() to get the View, then view.setBackgroundResource()?
这可以解决您的问题吗?基本上使用选择器在每个选项卡视图上调用 setBackgroundDrawable ?
Does this solve your problem? Basically calling setBackgroundDrawable on each tab view with a selector?
使用 .setBackgroundResource 且 tabNselector 是 XML - tabNselector.xml
Use .setBackgroundResource and tabNselector is an XML - tabNselector.xml
我在 XML 的 TabWidget 元素中设置了“android:background”参数,以提供所有选项卡的通用背景。
然后我在“.setIndicator”方法中传递了从另一个 XML 扩充的视图。
我觉得这是一个更好的方法。
I set the 'android:background' parameter in the TabWidget element of the XML to give the generic background of all the tabs.
Then I passed views inflated from another XML in the '.setIndicator' method.
I feel that's a nicer way of doing this.