Android Tabhost问题 - .setIndicator

时间:2010-08-10 07:02:32

标签: android android-widget tabwidget android-tabhost

首先让我澄清一下,我已经提到了与“Android - TAbhost”相关的SO问题。

我已经在谷歌搜索“Android Tabhost”但未能找到解决方案。

我的问题是:

如果有< 3 tab,那就没关系了。 但 如果我们有4个选项卡,其指标标题为TabHost1,TabHost2,TabHost3,TabHost4)。但Tab中的这个标题并没有配上标签。所以有没有办法让标题文本(即指标)适合标签?

2 个答案:

答案 0 :(得分:4)

我认为我们问题的根源在于框架代码中的某个地方。果然,我找到了一些线索:

首先,如果你查看TabWidget code内部,你会看到你在setIndicator中设置的标签被传递给一个名为LabelIndicatorStrategy的内部类,它将负责视图的膨胀与选项卡顶部相关联。这种通货膨胀是使用xml文件tab_indicator.xml完成的。此布局基于RelativeLayout,其中包含ImageViewTextView。如果你看一下textview的属性,你会发现它引用了android styles.xml中的一个样式。最后,你意识到我们有:

<item name="ellipsize">marquee</item>
<item name="singleLine">true</item>

所以,现在,2个选项:
首先,通过创建自己的样式来覆盖样式,在我看来,这将是非常轻松的方式,然后将这些属性更改为更适合您的内容。虽然结果可能不是很好。这将需要一些测试 或者,戴上你的手套并从TabWidget类复制代码,因为这里的另一个问题是我提到的内部类是......所以,如果我没有弄错的话就没有继承......所以我想,很多比styles.xml的方式更痛苦。 希望这会激励你,让我发布你得到的东西。我仍然感兴趣。

答案 1 :(得分:1)

我通过减小字体大小解决了上述问题,请检查以下代码 Style.xml

<resources>

    <style name="MyTheme" parent="@android:style/Theme.Light">
        <item name="android:tabWidgetStyle">@style/LightTabWidget</item>
    </style>

    <style name="LightTabWidget" parent="@android:style/Widget.TabWidget">
        <item name="android:textSize">12px</item>
        <item name="android:textColor">#1E90FF</item>
    </style>
</resources>