4

最初に、「Android - TAbhost」に関連するSOの質問をすでに参照していることを明確にします。

「Android Tabhost」についてグーグルで検索しましたが、解決策が見つかりませんでした。

私の問題は次のとおりです。

タブが 3 つ未満の場合は問題ありません。ただし、TabHost1、TabHost2、TabHost3、TabHost4 というインジケーターのタイトルを持つ 4 つのタブがある場合を想定します)。しかし、タブのこのタイトルはタブに適合しません。タブ内にタイトル テキスト (つまり、インジケーター) を収める方法はありますか??

4

2 に答える 2

4

私たちの問題の原因は、フレームワークのコードのどこかにあると思いました。そして確かに、私はいくつかの手がかりを見つけました:

まず、TabWidgetコード内を見ると、設定したラベルがsetIndicator呼び出された内部クラスに渡されLabelIndicatorStrategy、タブの上部に関連付けられたビューを膨張させることがわかります。このインフレーションは、xml ファイルtab_indicator.xmlを使用して行われます。このレイアウトは、およびRelativeLayoutを含むに基づいています。textview のプロパティを見ると、それが android styles.xmlのスタイルを参照していることがわかります。そして最後に、あなたは私たちがそれを持っていることに気づきます: ImageViewTextView

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

したがって、2 つのオプションがあります。
まず、独自のスタイルを作成してスタイルをオーバーライドします。これは、私の意見では、非常に簡単な方法であり、これらのプロパティをより適切なものに変更します。結果はあまり良くないかもしれませんが。これにはいくつかのテストが必要です。
または、手袋を着用して TabWidget クラスからコードをコピーします。ここでの別の問題は、私が言及した内部クラスが... PRIVATE であるため、間違っていなければ継承は不可能です. styles.xml の方法よりもはるかに面倒です。これがあなたに刺激を与えることを願っています。あなたが得たものを私に投稿してください. 私はまだ興味があります。

于 2010-08-10T12:22:57.700 に答える
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>
于 2010-10-04T08:37:55.390 に答える