Настройка вкладок ActionBar на Android 4

Я пытаюсь настроить вкладки на своем ActionBar. Я просто хочу выровнять вкладки на экране телефона и сделать его растягиваемым для разных экранов. Но все, что я получаю, это следующее:

enter image description here

Код, который я использую для темы, следующий:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarTabTextStyle">@style/MyActionBarTabTextStyle</item>
    </style>

    <style name="MyActionBarTabTextStyle" parent="@android:style/Widget.Holo.Light.Tab">
        <item name="android:textSize">14dip</item>
        <item name="android:padding">0dip</item>
    </style>

</resources>

Можно ли просто уменьшить шрифт и избавиться от этих синих линий?

Спасибо за помощь заранее.

P.S.: Также кнопка действует странно. Это не текст (пока он должен быть)...

Ответы

Ответ 1

Изменить: Используйте ActionBarCompat в библиотеке поддержки.


Я предлагаю вам использовать Jake Wharton ActionBarSherlock по двум причинам:

  • ActionBarSherlock - это расширение библиотеки совместимости, которая облегчает использование панели действий во всех версиях Android. Это означает, что пользователи, запускающие ваше приложение на версиях Android до HoneyComb, смогут использовать ActionBar для навигации. Это предпочтительнее и для пользователя (поскольку ActionBar является удивительным!) И вам (так как вам не нужно беспокоиться о разделении потока управления вашим приложением на основе того, будет ли доступен ActionBar. Например, без предварительной совместимости с HoneyComb ActionBar вам может потребоваться создать несколько Activity для одного экрана... один, который оптимизирован для использования с ActionBar, и тот, который может быть запущен на pre-HoneyComb.

  • С помощью ActionBarSherlock, стиль вашего ActionBar прост! Я мог бы подробно рассказать о том, как это сделать, но в библиотеке уже есть LOT пример кода, который иллюстрирует, как вы описываете выше.

Установка/использование библиотеки очень проста и почти идентична использованию обычного ActionBar, предусмотренного в Android SDK (в основном просто звоните getSupportActionBar() вместо getActionBar()). Если у вас есть какие-либо вопросы, дайте мне знать.

p.s. Также обратите внимание, что ActionBarSherlock предоставляет все функции, которые предоставляет библиотека ViewPagerExtensions и многое другое. Я бы определенно рекомендовал использовать первое по сравнению с последним.

Ответ 3

Я нашел использование руководств по стилям для вкладок, которые очень несовместимы для сотов. Было гораздо проще просто раздувать пользовательский вид, который вам нужен.

Fragment serivceFrag = new ServicesFragment();
Tab serviceTab = bar.newTab();
TextViewPlus serviceTabTextView =(TextViewPlus)getLayoutInflater().inflate(R.layout.tab_item_layout, null);
serviceTabTextView.setText(servicesLabel);
serviceTab.setCustomView(serviceTabTextView);
serviceTab.setTabListener(new TabListenerFragment(serivceFrag,"Service",R.id.MainInfoPaneFragment));
bar.addTab(serviceTab);

Это для меня было намного проще,

Ответ 4

Изменить на:

<style name="MyActionBarTabTextStyle" parent="@android:style/Widget.Holo.ActionBar.TabText">
     <item name="android:textSize">14dip</item>
     <item name="android:padding">0dip</item>
</style>

Ответ 5

Я думаю, что вы наследуете неправильный стиль, попробуйте:

<style name="MyActionBarTabTextStyle" parent="android:TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textSize">14sp</item>
    <item name="android:padding">0dip</item>
</style>

EDIT: также убедитесь, что вы используете sp вместо dip для размера шрифта (14sp)

Ответ 6

Я настоятельно рекомендую вам использовать библиотеку ViewPagerExtensions, она дает вам 5 различных вкладок в стиле, которые вы выбираете, а также проблема, которую вы имеете для заполнения вкладок в портретной и альбомной ориентации, ода для каждого размера экрана уже решена в этой библиотеке.

Кстати, если вы заглянете в код библиотеки, вы можете легко создать эту тему самостоятельно.

Кроме того, если у вас возникли проблемы с реализацией этой страницы с фрагментом, посмотрите actionbarsherlock-tabs-multi-fragments

Ответ 7

Вы можете использовать метод setCustomView.