Android - tabhost不改变背景颜色
我已经安装了我的tabhost背景颜色,但它不工作。Android - tabhost不改变背景颜色
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
<item name="actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>
<style name="ActionBarTabStyle"
parent="@style/Widget.AppCompat.ActionBar.TabView">
<item name="android:background">@drawable/tab_bg_selector</item>
<item name="background">@drawable/tab_bg_selector</item>
</style>
tab_bg_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blueLight" android:state_pressed="true"/>
<item android:drawable="@color/blueLight" android:state_selected="true"/>
<item android:drawable="@color/blueDark"/>
</selector>
bottom_tabs.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/realtabcontent"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" />
<android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0" />
</android.support.v4.app.FragmentTabHost>
</LinearLayout>
恳求建议。谢谢。
如果你确定而改变颜色的代码比你可以试试这个:
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
public void onTabChanged(String arg0) {
for (int i = 0; i < tab.getTabWidget().getChildCount(); i++) {
tab.getTabWidget().getChildAt(i)
.setBackgroundResource(R.drawable.tab_selected); // unselected
}
tab.getTabWidget().getChildAt(tab.getCurrentTab())
.setBackgroundResource(R.drawable.tab_unselected); // selected
}
});
我无法实现OnTabChangeListener,因为我使用的是ActionBarActivity,而不是TabActivity –
由于您使用程序兼容性库,使用此:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
<item name="actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>
<style name="ActionBarTabStyle"
parent="@style/Widget.AppCompat.ActionBar.TabView">
<item name="android:background">@drawable/tab_bg_selector</item>
<item name="background">@drawable/tab_bg_selector</item>
</style>
您所需要的Widget.AppCompat.ActionBar.TabView
家长和用于AppCompat支持的android:
变体。
这是根据ActionBar's documentation和。
这不起作用,请检查我编辑的问题。 –
是的,你也有'ActionBarTabStyle'错误。它应该有'Widget.AppCompat.ActionBar.TabView'作为父项,而不是'android:Widget.ActionBar.TabView'。再次检查:) – shkschneider
仍然无法正常工作,我已经更新了该问题。 –
,您可以尝试:
tab_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:drawable="@drawable/unselected_tab" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/button_buynow" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>
<!-- Focused states -->
<item android:drawable="@drawable/unselected_tab" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/selected_tab" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/>
<!-- Pressed -->
<!-- Non focused states -->
<item android:drawable="@drawable/unselected_tab" android:state_focused="false" android:state_pressed="true" android:state_selected="false"/>
<item android:drawable="@drawable/button_buynow" android:state_focused="false" android:state_pressed="true" android:state_selected="true"/>
<!-- Focused states -->
<item android:drawable="@drawable/unselected_tab" android:state_focused="true" android:state_pressed="true" android:state_selected="false"/>
<item android:drawable="@drawable/button_buynow" android:state_focused="true" android:state_pressed="true" android:state_selected="true"/>
</selector>
MainActivity声明在你之后,你可以用下面的代码:
TabWidget widget = th.getTabWidget();
for (int i = 0; i < widget.getChildCount(); i++) {
View v = widget.getChildAt(i);
v.setBackgroundResource(R.drawable.tab_selector);
}
我想要的是改变背景颜色,而不是背景图像。 –
TextView tv =(TextView)th.getTabWidget()。getChildAt(1) \t \t \t \t .findViewById(android.R.id.title); // Unselected Tabs \t \t \t \t tv.setBackgroundColor(getResources()。getColor(R.color.TransparentColor)); – BSavaliya
对不起,我真的不明白。 –
在你的主题,加入以下内容
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
然后加入MyActionBar风格(换成你自己绘制项):
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<!-- action bar background -->
<item name="background">@drawable/ab_solid_mytabhost</item>
<!-- needed for 'stacked' & 'split' action bar (used by tabhost) -->
<item name="backgroundStacked">@drawable/ab_stacked_solid_mytabhost</item>
<item name="backgroundSplit">@drawable/ab_bottom_solid_mytabhost</item>
</style>
你styles.xml应该是这个样子:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
<item name="actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>
<style name="ActionBarTabStyle" parent="@style/Widget.AppCompat.ActionBar.TabView">
<item name="android:background">@drawable/tab_bg_selector</item>
<item name="background">@drawable/tab_bg_selector</item>
<!-- add these -->
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- add this-->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<!-- action bar background -->
<item name="background">@drawable/ab_solid_mytabhost</item>
<!-- needed for 'stacked' & 'split' action bar (used by tabhost) -->
<item name="backgroundStacked">@drawable/ab_stacked_solid_mytabhost</item>
<item name="backgroundSplit">@drawable/ab_bottom_solid_mytabhost</item>
</style>
对于工作示例,这里是一个链接到一个示例项目:https://github.com/ebernie/MyTabHostThemeSample
您使用AppCompat库吗? – shkschneider
是的,编译'com.android.support:appcompat-v7:22.1.0' –
你可以发布tabvew –