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

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

我的问题是:

如果有 <3 个选项卡,那就没问题了。但是,如果我们有4个标题为tabhost1,tabhost2,tabhost3,tabhost4),则支持指示标题的4个选项卡。但Tab中的这个标题并没有与Tab配合。所以 有什么方法可以适应标题文本(即指示器)在选项卡内?

有帮助吗?

解决方案

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

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

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

所以,现在有两个选择:
首先,通过创建您自己的样式来覆盖样式,在我看来,这将是真正轻松的方法,然后将这些属性更改为更适合您的属性。虽然结果可能不太好。这需要一些测试。
或者,戴上手套并从 TabWidget 类中复制代码,因为这里的另一个问题是我提到的内部类是......私有所​​以,如果我没记错的话,不可能继承......所以我认为,比 styles.xml 的方式痛苦得多。希望这会对您有所启发,请随时向我通报您收到的信息。我还是有兴趣。

其他提示

我已经通过减少字体的大小解决了上述问题,请检查下面的代码的 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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top