rom*_*ben 2 android textview android-tabhost android-textattributes
我正在尝试更改TabWidget文本颜色,但没有成功,即使我尝试了不同的方式来更改它(请参阅下面的代码.)
我的背景标签是一张图片:
for (int i = 0; i < tabHost.getTabWidget().getTabCount(); i++) {
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
}
Run Code Online (Sandbox Code Playgroud)
我不知道这是否与我现在想做的事情产生某种冲突.
解决方法1:
main.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"
/> ....
Run Code Online (Sandbox Code Playgroud)
style.xml
... <style name="TabText">
<item name="android:textColor">@color/tab_text_color</item> </style> ....
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
解决方案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);
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
但两种解决方案都无效
但是,如果我改变第二个解决方案
textView.setTextColor (R.color.tab_text_color);
Run Code Online (Sandbox Code Playgroud)
至
textView.setTextColor (Color.parseColor ("# ...."));
Run Code Online (Sandbox Code Playgroud)
它有效,除了这个解决方案在我点击它时不会改变文本的颜色.
谢谢.
我能够解决,解决方案不优雅但有效.我希望谁对某人有用:
首先,我必须为所有选项卡的textview设置init颜色:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我在覆盖方法ontabchanged中设置了每个选项卡的更改颜色.脉冲的标签是i(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"));
}
}
});
Run Code Online (Sandbox Code Playgroud)
对不起我的英语,我希望对某人有用=)再见!; d
| 归档时间: |
|
| 查看次数: |
7635 次 |
| 最近记录: |