Android Tabhost 问题 - .setIndicator
-
27-09-2019 - |
题
首先让我澄清一下,我已经提到了与“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>