Когда используется ActionBar с вкладками в две строки или в одну строку?

Я уже задавал аналогичный вопрос об Android ActionBar: Изменить цвет фона вкладок ActionBar

У меня до сих пор нет ответа на вопрос: когда будет двухстрочный дизайн/когда будет использоваться однострочный? Я установил собственный разделитель на панель вкладок, и он также используется в горизонтальном макете. Однако для создания рисунков/стилей на основе ориентации/размера экрана и т. д. мне нужно знать, когда какой макет используется. Просматривая исходный код Android, кажется, что они используют одни и те же чертежи для обоих макетов, так что это мне не очень помогает. Та же проблема возникает при изменении цвета шрифта в представлении вкладок.

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


person Maria Neumayer    schedule 09.07.2012    source источник


Ответы (1)


Android будет размещать вкладки под панелью действий, когда посчитает размер/ориентацию экрана узким (например, на экране нормального размера в книжной ориентации или на экране маленького размера независимо от ориентации). Точно так же, если есть много вкладок, в некоторых случаях они будут отображаться в виде раскрывающегося списка, чтобы обеспечить наилучшее размещение на панели действий.

Панель действий — это высокоадаптивный элемент управления пользовательского интерфейса. Если вы собираетесь использовать его режимы навигации, я настоятельно рекомендую не пытаться предвидеть их конфигурацию или применять стили, специфичные для каждого из них. В любом случае ваши вкладки всегда должны быть 9patch, потому что высота базовой панели действий также будет варьироваться в зависимости от ориентации и размера экрана (обратите внимание, что ее высота немного меньше в альбомной ориентации).

Тем не менее, вы можете запросить высоту панели действий во время выполнения, используя ее метод getHeight(). Этот Пример Honeycomb Gallery, включенный в SDK, использует набор логики в OnGlobalLayoutListener, чтобы убедиться, что макет фрагмента правильно реагирует на различные размеры панели действий.

person Jeff Gilfelt    schedule 09.07.2012
comment
Это именно то, что мне нужно было знать, спасибо! Это больше касается смены цветов разделителя табуляции/шрифта. - person Maria Neumayer; 10.07.2012