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

10

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

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

ActionBar in portrait mode

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

ActionBar in landscape mode

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

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

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

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

Ваш Ответ

1   ответ
23

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"

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

Вторую мысль услышать от Джейка. Это интересная проблема. Я только что проверил в ванильном приложении GTalk на ICS, оно не имеет проблемы с обрезкой текста.
Я отредактировал ваш ответ с примером ... теперь, кажется, работает нормально! Спасибо! Alvaro Luis Bustamante
Ваше наблюдение правильно. Просто нужно неandroidверсия с префиксом в теме, так что она работает на pre-ICS. Рекомендую вычеркнуть верхний раздел.
Хороший подход, но да, я думаю, что он будет работать только для устройств до ICS. В приложении GTalk эта проблема не возникает, потому что размер заголовка (не субтитра) кажется меньшим, чем собственный размер. Но, как я прокомментировал, я не могу этого сделать, потому что заголовок также будет включать в себя другие (большие) значки. Я буду ждать ответа Джейка =) Alvaro Luis Bustamante

Похожие вопросы