Проблема с Android Tabhost - .setIndicator - PullRequest
4 голосов
/ 10 августа 2010

Сначала позвольте мне уточнить, что я уже упоминал вопрос SO, связанный с "Android - TAbhost".

Я сделал поиск в Google по поводу Android Tabhost, но не смог найти решение.

Моя проблема:

Если у вас <3 вкладки, тогда все в порядке. но Поддержка, если у нас есть 4 вкладки с заголовком индикатора как TabHost1, TabHost2, TabHost3, TabHost4). Но этот заголовок во вкладке не соответствует вкладке. так <strong>есть ли способ разместить текст заголовка (т.е. индикатор) внутри вкладки ??

Ответы [ 2 ]

4 голосов
/ 10 августа 2010

Я думал, что источник нашей проблемы был где-то в коде фреймворка. И, конечно же, я нашел несколько подсказок:

Во-первых, если вы заглянете внутрь TabWidget кода , вы увидите, что метка, установленная в setIndicator, передается во внутренний класс с именем LabelIndicatorStrategy, который позаботится о накачке вид, связанный с верхней частью вкладки. Для этого используется XML-файл tab_indicator.xml . Этот макет основан на RelativeLayout, содержащем ImageView и TextView. И если вы посмотрите на свойства текстового представления, то увидите, что оно ссылается на стиль в android styles.xml . И вот, наконец, вы понимаете, что у нас есть ТО:

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

Итак, теперь, 2 варианта:
Во-первых, переопределите стиль, создав собственный стиль, который, на мой взгляд, был бы действительно безболезненным, а затем измените эти свойства на то, что подходит вам лучше. Хотя результат может быть не очень хорошим. это потребует некоторого тестирования.
Или наденьте перчатки и скопируйте код из класса TabWidget, потому что другая проблема заключается в том, что внутренний класс, о котором я упоминал, является ... ЧАСТНЫМ, так что наследование невозможно, если я не ошибаюсь ... ТАК, я думаю, очень гораздо больше боли, чем в стиле styles.xml. Надеюсь, что это вдохновит вас, держите меня в курсе того, что вы получите, пожалуйста. Я все еще заинтересован.

1 голос
/ 04 октября 2010

Я решил вышеупомянутую проблему, уменьшив размер шрифта, проверьте код ниже 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>
...