Android (ActionBarSherlock) Есть ли способ сохранить ту же высоту ActionBar как в портретной, так и в альбомной ориентации?

Я работаю с ActionBar и ActionBarSherlock в течение последних нескольких дней, и у меня возникают некоторые проблемы при заполнении некоторой информации в ActionBar.

Когда приложение работает в портретном режиме, ActionBar выглядит отлично, и все данные могут отображаться, например:

ActionBar in portrait mode

Но когда я переключу приложение, которое будет отображаться в альбомной ориентации, некоторые данные обрезаются:

ActionBar in landscape mode

Вы можете заметить, как иконка статуса, и электронная почта были обрезаны из-за новой высоты ActionBar.

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

Способ ввода этих значков в заголовок панели действий и субтитры осуществляется с помощью Html.fromHtml

Любые идеи для решения этой проблемы? Я использую библиотеку ActionBarSherlock!

Ответ 1

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

например. значение по умолчанию в портрете:

<dimen name="abs__action_bar_default_height">48dip</dimen>

И в пейзаже:

<dimen name="abs__action_bar_default_height">40dip</dimen>

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


Изменить:. Подумайте об этом, вероятно, это не сработает, когда родной ActionBar будет использоваться в ICS, так как высота затем решит значение платформы в ?android:attr/actionBarSize. Я бы рекомендовал вам подождать лучшего предложения, например. от самого Джейка.

Второе редактирование: После ответа Джейка кажется, что все, что вам нужно сделать, чтобы заставить его работать с ActionBarSherlock на обоих устройствах ICS и pre-ICS, добавляет следующее к теме вашего приложения:

<item name="actionBarSize">@dimen/some_value</item>
<item name="android:actionBarSize">@dimen/some_value</item> 

Затем вы можете добавить фактические значения в соответствующие корзины портрета/земельного ресурса.

Третье редактирование [thanks alvarolb]: XML Пример для стиля:

<?xml version="1.0" encoding="utf-8"?>
<resources>   
    <style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
        <item name="actionBarSize">48dip</item>
        <item name="android:actionBarSize">48dip</item> 
    </style> 
</resources>

И в соответствующем действии установите этот новый стиль

android:theme="@style/Theme.Styled"

и.. он работает!