2012-07-14 72 views
1

我在使用TextViews作为TabHost上的指标。我使用文本视图的自定义背景,但是我对文本颜色不做任何处理。在我的活动的onCreate方法中,我没有问题设置当前选项卡。Android TabHost初始选项卡的文本颜色不正确

当我启动活动时,选定选项卡的背景显示正确,选项卡的内容也是正确显示,但两个选项卡的文本颜色初始为浅灰色。但是,一旦我点击任一选项卡,选定选项卡的文本颜色就会变黑。我似乎无法找到以编程方式选择选项卡的方式,以便将文本颜色更新为黑色,就像您实际单击选项卡时所做的那样。我想:

  • 的标签主机
  • 呼吁setCurrentTab上的标签控件
  • 呼吁focusCurrentTab上的标签控件
  • 上的指示灯文本视图
  • 电话呼叫的setSelected(真)的调用setCurrentTab setSelected(true)在选项卡小部件的子视图

总之,我不想应用自定义文本颜色。我只是希望它使用默认主题的颜色,但是我希望在编程选择它之后选项卡的状态与点击它之后的状态完全相同。

回答

4

我正在使用MonoDroid看到相同的问题。

// Set current tab to ScheduleTab 
TabHost.CurrentTab = 1; 
// TODO Focus not working completely 
TabHost.TabWidget.FocusCurrentTab(1); 

设置了正确的选项卡并处于活动状态,但是文本颜色是浅灰色而不是黑色。如果使用触摸输入来选择选项卡,则文本颜色会变为黑色,但在以编程方式进行设置时不会变为黑色。

底部条形指示器也正确渲染,只是不是文本颜色。

我发现的修复是创建并使用显式选择器来设置文本颜色。

绘制/ TabTextColors.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" android:color="#444"/> 
    <item android:state_focused="true" android:color="#444"/> 
    <item android:state_pressed="true" android:color="#444"/> 
    <item android:color="#ccc"/> 
</selector> 

然后从我的标签视图引用它。

<TextView 
     android:id="@+id/tabsText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:padding="10dip" 
     android:text="TITLE" 
     android:textSize="13dip" 
     android:textStyle="bold" 
     android:textColor="@drawable/TabTextColors" />