我来自objective-c,我是一名Android新手。我正在使用以下方法来改变tabColor的索引0.但我想在选中时更改默认的灰色选项卡。谢谢。
mTabHost.getTabWidget().getChildAt(0).setBackgroundColor(Color.CYAN);
答案 0 :(得分:5)
在TabHost上使用setOnTabChangedListener(TabHost.OnTabChangeListener l):
myTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener(){
@Override
public void onTabChanged(String tabId) {
int tab = myTabHost.getCurrentTab();
myTabHost.getTabWidget().getChildAt(tab).setBackgroundColor(Color.CYAN);
}
});
也许有一种更简单的方法,我之前没有使用它;)
答案 1 :(得分:2)
Android允许使用StateList drawable xml文件,这是获取您所需效果的预期方式。
我们的想法是创建一个xml文件,为每个状态声明一个不同的drawable(或颜色,如果你想要纯颜色)。然后,当您将状态列表drawable应用为View的背景时,它将处理为您切换视图图像的“魔力”,这样您就不必担心从java代码手动执行此操作。
所以你的代码片段看起来像这样:
myTabHost.getTabWidget().getChildAt(tab).setBackgroundResource(R.drawable.your_state_list_filename);
以下是我在按钮上使用的状态列表文件的示例。您可以将其复制到drawables文件夹中的xml文件中,然后将其修改为使用您想要的任何状态和图像。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/darkblue1" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/darkblue1" /> <!-- focused -->
<item android:drawable="@drawable/lightblue1" /> <!-- default -->
</selector>
我认为(但不确定)要使用颜色代替drawable,您只需将"@drawable/blahblah"
更改为"#FF121212"
,前两位数字为alpha,接下来的6位为十六进制值你想要的颜色。
答案 2 :(得分:0)
我刚刚更改了TabHost的标记
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@android:color/transparent">
答案 3 :(得分:0)
我用这个来解决我的问题:
tabs.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
tabs.setSelectedIndicatorColors(Color.RED);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});