Цвет текста не изменяется TabWidget
Я пытаюсь изменить цвет текста TabWidget
, но безуспешно, хотя я пытался изменить его другим способом (см. код ниже.)
Мои фоновые вкладки-это изображение:
for (int i = 0; i < tabHost.getTabWidget().getTabCount(); i++) {
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
}
Я не знаю, создает ли это какой-то конфликт с тем, что я хочу сделать сейчас.
Решение 1:
Главная.xml
....
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tabbarbackground"
android:tabStripEnabled="false"
style="@style/TabText"
/> ....
Стиль.xml
... <style name="TabText">
<item name="android:textColor">@color/tab_text_color</item> </style> ....
Tab_text_color.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:textColor="#2daed9" />
<item android:state_selected="false" android:color="#FFFFFF" />
</selector>
Решение 2
for (int i = 0; i < tabHost.getTabWidget().getTabCount(); i++) {
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
RelativeLayout rl = (RelativeLayout) tabHost.getTabWidget().getChildAt(i);
TextView textView = (TextView) rl.getChildAt(1);
textView.setTextColor(R.color.tab_text_color);
}
Tab_text_color.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:textColor="#2daed9" />
<item android:state_selected="false" android:color="#FFFFFF" /> </selector>
Но ни одно из решений не работает.
Однако, если я изменю второе решение
textView.setTextColor (R.color.tab_text_color);
К
textView.setTextColor (Color.parseColor ("# ...."));
Это работает, за исключением того, что это решение не изменяет цвет текста, когда я нажимаю на него.
Спасибо.
3 ответа:
Я смог решить, решение не элегантное, но работает. Я надеюсь, кто полезен для кого-то:
Во-первых, я должен установить цвет init для textview всех вкладок:
for (int i = 0; i < tabHost.getTabWidget().getTabCount(); i++) { vg = (ViewGroup) getTabHost().getTabWidget().getChildAt(i); tv = (TextView) vg.getChildAt(1); tv.setTypeface(font); if (i == 0) { tv.setTextColor(Color.parseColor("#2daed9")); Currentab = 0; } else { tv.setTextColor(R.color.GrisOscuro); } }
А затем, я установил в переопределенном методе ontabchanged, изменение цвета для каждой вкладки. Вкладка пульсировала я (getTabHost ().getCurrentTab ()). И последняя вкладка, которую я нажимаю-Currentab.
getTabHost().setOnTabChangedListener(new OnTabChangeListener() { public void onTabChanged(String tabId) { int i = getTabHost().getCurrentTab(); if (Currentab != i) { vg = (ViewGroup) getTabHost().getTabWidget() .getChildAt(Currentab); tv = (TextView) vg.getChildAt(1); tv.setTextColor(R.color.GrisOscuro); Currentab = i; vg = (ViewGroup) getTabHost().getTabWidget() .getChildAt(i); tv = (TextView) vg.getChildAt(1); tv.setTextColor(Color.parseColor("#2daed9")); } } });
Извините за мой английский, надеюсь, кому-то пригодится=) пока! ;D
В вашем решении 2:
TabWidget tabwidget=mTabHost.getTabWidget(); for(int i=0;i<tabwidget.getChildCount();i++){ TextView tv=(TextView) tabwidget.getChildAt(i).findViewById(android.R.id.title); tv.setTextColor(this.getResources().getColorStateList(R.color.tab_text_xml)); }
Попробуйте написать этот метод:
public void onTabChanged(String tabId) { for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) { TextView tv = (TextView) tabhost.getTabWidget() .getChildAt(i).findViewById(R.id.your_text_id); tv.setTextColor(#FFFFFF);
}
TextView tv = (TextView) tabHost.getTabWidget(). getChildAt(tabHost.getCurrentTab()).findViewById(R.id.your_text_id); tv.setTextColor(#2daed9); }