Android: dividerPadding не влияет

Эта тема отлично работает, ссылаясь на три пользовательских стиля для трех частей вкладок ActionBar.

Но «dividerPadding» не влияет ни на одного из них – работает на устройствах API 17.

<style name="Theme.AppEmptyTitleBar" parent="android:style/Theme.Holo"> <item name="android:actionBarStyle">@style/AB</item> <item name="android:actionBarTabStyle">@style/ABT</item> <item name="android:actionBarTabBarStyle">@style/ABTB</item> </style> <style name="AB" parent="android:style/Widget.Holo.ActionBar"> <item name="android:dividerPadding">20dip</item> </style> <style name="ABT" parent="android:style/Widget.Holo.Light.ActionBar.TabView"> <item name="android:dividerPadding">20dip</item> </style> <style name="ABTB" parent="android:style/Widget.Holo.ActionBar.TabBar"> <item name="android:dividerPadding">20dip</item> </style> 

Прежде всего, атрибут dividerPadding (насколько мне известно) применим только к стилю *ActionBar.TabBar .

Я протестировал ваш стиль с помощью очень простого приложения, использующего собственный ActionBar и устройство, предоставляющее API 17. Я установил атрибут dividerPadding для разных значений и оставил остальные атрибуты со значениями по умолчанию. Вот результаты:

  • dividerPadding="0dip" :

Введите описание изображения здесь

  • dividerPadding="15dip" :

Введите описание изображения здесь

  • dividerPadding="20dip" :

Введите описание изображения здесь

Как вы можете видеть, разделитель ушел на последнее изображение. Поэтому мой первый совет – проверить, видите ли вы его вообще. Помимо этого, dividerPadding работает как ожидалось.

Мой второй совет объясняется тем, как платформа Android обрабатывает ресурсы стиля, размещенные в разных каталогах values-* . Моя догадка заключается в том, что вы можете использовать стили Action bar в каталоге values по умолчанию. Если после этого вы сможете переопределить эти стили в каталоге values-* который совместим (например, values-vX где X <= 17 ), стили из values будут проигнорированы. В качестве примера рассмотрим, что вы разместили эти стили образца в values/styles.xml :

 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppTheme" parent="@android:style/Theme.Holo"> <item name="android:actionBarTabBarStyle">@style/ABTB</item> </style> <style name="ABTB" parent="@android:style/Widget.Holo.ActionBar.TabBar"> <item name="android:dividerPadding">0dip</item> </style> </resources> 

Если вы поместите это определение стиля в values-v17/styles.xml :

 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppTheme" parent="@android:style/Theme.Holo"> </style> </resources> 

Он переопределит стиль AppTheme , эффективно «сбросив» (технически: игнорируя) весь стиль actionBarTabBarStyle (включая dividerPadding атрибута dividerPadding ). Фактически, вы не увидите изменений, внесенных в стиль ABTB .

редактировать

Да, я предположил, что вы это знаете, извините 🙁 Значение dividerPadding применяется только к:

  • Верх и низ разделителя, когда TabWidget (это контейнер ярлыков вкладок) рисует вкладки по горизонтали.
  • Левая и правая стороны разделителя, когда TabWidget рисует вкладки по вертикали.

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

Intereting Posts
Как передать значения из класса в действие – Android Android OnEditorActionListener () actionId дает 0, когда я нажимаю кнопку «Готово» Как сохранить уведомление о своем Android до закрытия моего приложения? Предотвратите переустановку адаптера в прокрутке Определите, открывается или закрывается NavigationDrawer Приложение для Android в режиме отладки Использование функции mapfragment офлайн Как найти расстояние (по дороге) между 2 точками геометрии в приложении Android без использования google map direction api? Android Studio: ни путь, ни baseDir не могут быть пустой или пустой строкой. Path = 'null' basedir = '/ Users / … / app' Как я могу запустить командную строку FFMPEG и принять несколько каналов (видео и аудио) без блокировки на первом входе? Библиотека просмотра pdf для Android Какое значение имеет местоположение каждого Android.Address? Преимущества использования Binder для IPC в Android OnActivityResult С launchMode = "singleTask"? Получить / выбрать изображение из встроенного приложения Gallery от Google