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

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

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

ActionBar in portrait mode

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

ActionBar in landscape mode

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

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

Я помещаю эти значки в заголовок и подзаголовок панели действий с помощью Html.fromHtml.

Есть идеи, чтобы решить эту проблему? Я использую библиотеку ActionBarSherlock!

Ответы на вопрос(1)

Решение Вопроса

One, probably not too pretty approach, could be to override the default height values for the ActionBar in dimens.xml.

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

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

И в ландшафте:

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

There might be a cleaner way to do it, but I have to admit I know too little about the internals of ActionBarSherlock for that.

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

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

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

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

Third edit [Спасибо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"

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

 05 июн. 2012 г., 03:30
Вторую мысль услышать от Джейка. Это интересная проблема. Я только что проверил в ванильном приложении GTalk на ICS, оно не имеет проблемы с обрезкой текста.
 Alvaro Luis Bustamante08 июн. 2012 г., 02:44
Я отредактировал ваш ответ с примером ... теперь, кажется, работает нормально! Спасибо!
 07 июн. 2012 г., 01:06
Ваше наблюдение правильно. Просто нужно неandroidверсия с префиксом в теме, так что она работает на pre-ICS. Рекомендую вычеркнуть верхний раздел.
 Alvaro Luis Bustamante05 июн. 2012 г., 11:09
Хороший подход, но да, я думаю, что он будет работать только для устройств до ICS. В приложении GTalk эта проблема не возникает, потому что размер заголовка (не субтитра) кажется меньшим, чем собственный размер. Но, как я прокомментировал, я не могу этого сделать, потому что заголовок также будет включать в себя другие (большие) значки. Я буду ждать ответа Джейка =)

Ваш ответ на вопрос