Подтвердить что ты не робот

Stacked панель вкладок ActionBar, не заполняющая родительскую

Я создаю вкладки навигации по Action Bar, но когда панель действий укладывается в стек, вкладки не получают всего пространства ширины. У меня есть фото, чтобы проиллюстрировать его.

enter image description here

Возможно ли в этом случае предоставить каждой вкладке 50% ширины экрана?

Спасибо

Я редактирую, чтобы сказать, что это не панель действий Шерлока. И я работаю в Samsung Galaxy Note 10.1 и в Nexus 7. И теперь, тестируя его в Nexus, я заметил, что это по-другому. Другой снимок экрана:

enter image description here

4b9b3361

Ответ 1

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

В платформе Android используется класс ActionBarPolicy для установки некоторых правил поведения ActionBar. В этом файле (который можно найти здесь: https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/view/ActionBarPolicy.java), вы найдете метод getStackedTabMaxWidth(), который возвращает значение dimen ( в настоящее время установленный в ressources при 160dip).

Это значение используется для внутреннего класса TabView, размещенного в ScrollingTabContainerView (https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/widget/ScrollingTabContainerView.java). TabView - это частная реализация TabBar ActionBar.

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

Ответ 2

Вкладка вкладок панели инструментов Android не имеет регулируемой ширины.

"Уложенные вкладки панели задач теперь имеют ограничение по ширине, что предотвращает всплывающие вкладки, которые могут охватывать весь экран. Кластер вкладок центрирован, если он не охватывает всю ширину." https://android.googlesource.com/platform/frameworks/base/+/b8139af3dcae80c0030afd0354dc424a7c72c3d9

Решение состоит в использовании TabLayout API из библиотеки поддержки дизайна Android, выпущенной под Android 5.0. Для библиотеки поддержки Android требуется библиотека appcompat, но эта зависимость разрешена для вас, если вы создаете с помощью gradle.

Для большинства разработчиков это не проблема, но настройка TabLayout требует, по меньшей мере, уровня API SDK 22, потому что зависимость appcompat скомпилирована против 22. Однако TabLayout не имеет среды выполнения зависимость от 22, что означает, что вы можете запускать его на устройствах до уровня API 7.

tl; r - использовать Tablayout из библиотеки дизайна Android. Требуется API-уровень 22 для разработчика, но может работать на старых телефонах до версии 7.