1

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

当我启动活动时,所选选项卡的背景显示正确,选项卡的内容也是如此,但两个选项卡的文本颜色最初都是浅灰色的。但是,一旦我单击任一选项卡,从那时起所选选项卡的文本颜色就是黑色。我似乎无法找到一种以编程方式选择选项卡的方法,以将文本颜色更新为黑色,就像您实际单击选项卡时所做的那样。我试过了:

  • 在选项卡主机上调用 setCurrentTab
  • 在选项卡小部件上调用 setCurrentTab
  • 在选项卡小部件上调用 focusCurrentTab
  • 在指标文本视图上调用 setSelected(true)
  • 在选项卡小部件的子视图上调用 setSelected(true)

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

4

1 回答 1

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" />
于 2012-09-20T13:49:47.307 回答