ActionBar с вкладками навигации изменяет высоту с ориентацией экрана

Моя цель – увеличить высоту ActionBar для портретного режима. В настоящее время я устанавливаю

андроид: actionBarSize

В моем Themes.xml.

 <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="DayTheme" parent="android:style/Theme.Holo.Light"> <item name="android:actionBarSize">@dimen/actionBarHeight</item> <item name="android:actionBarTabTextStyle">@style/tab_indicator_text_dark</item> </style> <style name="NightTheme" parent="android:style/Theme.Holo"> <item name="android:actionBarSize">@dimen/actionBarHeight</item> <item name="android:actionBarTabTextStyle">@style/tab_indicator_text_light</item> </style> </resources> 

Я получаю желаемый эффект в ландшафтном режиме, где я увеличил высоту ActionBar до 80dp.

Введите описание изображения здесь

Тем не менее, я поворачивал экран в портретный режим, поэтому высота изменяется.

Введите описание изображения здесь

Примечание. Я делаю следующие вызовы в коде.

 final ActionBar bar = getActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); bar.setDisplayShowTitleEnabled(false); bar.setDisplayShowHomeEnabled(false); 

Я разрабатываю Nexus 7 с Android 4.2.

Как получить ту же самую высоту 80dp в портретном режиме, что и в ландшафтном режиме?

Вы написали:

Как получить ту же самую высоту 80dp в портретном режиме, что и в ландшафтном режиме?

Установив атрибут темы Application android:actionBarSize и атрибут стиля ActionBar.TabView android:minHeight (или height ) до 80 dip.

Основной пример:

 <style name="ThemeHoloWithActionBar" parent="android:Theme.Holo.Light"> <item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item> <item name="android:actionBarSize">80dip</item> </style> <style name="ActionBarTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabView"> <item name="android:minHeight">80dip</item> </style> 

Задайте тему в манифесте:

  <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/ThemeHoloWithActionBar" > 

Добавьте несколько вкладок в ActionBar в Activity:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionbar = getActionBar(); actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionbar.setDisplayShowTitleEnabled(false); actionbar.setDisplayShowHomeEnabled(false); ActionBar.Tab tabA = actionbar.newTab().setText("Tab A"); ActionBar.Tab tabB = actionbar.newTab().setText("Tab B"); ActionBar.Tab tabC = actionbar.newTab().setText("Tab C"); tabA.setTabListener(new MyTabsListener()); tabB.setTabListener(new MyTabsListener()); tabC.setTabListener(new MyTabsListener()); actionbar.addTab(tabA); actionbar.addTab(tabB); actionbar.addTab(tabC); } 

Это дает вкладки с 80 высотой падения в портретном режиме:

Введите описание изображения здесь

И вкладки с 80 глубиной падения в ландшафтном режиме:

Введите описание изображения здесь

РЕДАКТИРОВАТЬ:

В этом примере версии SDK в манифесте были установлены так:

 android:minSdkVersion="12" android:targetSdkVersion="15" 

Согласно OP, пример работает с этими настройками SDK. Однако, если targetSkdVersion вместо этого установлен в 16 или 17, пример не работает. ОП подала отчет об ошибке:

Intereting Posts
Как программно отключить Android-мобиль? Как удалить изображение кнопки с помощью java-кода? Связь Dalvik с Java SE Запустить контрольно-измерительный тест с использованием Espresso: класс ref в предварительно проверенном классе разрешен к неожиданному выполнению Повторное воспроизведение прокрутки FAB Android-подборщик изображений для локальных файлов Нарисовать android.media.Image к поверхности Различия между android: text = "@ string" и android: text = "…" Зависимость org.json: json: 20090211 игнорируется для отладки, поскольку она может противоречить внутренней версии, предоставляемой Android RealmObject AND Parcelable Помогает ли Dalvik (Androids JVM) заменить горячий код? Azure Notification Hub больше не принимает ключ API GCM Proguard greyed в определенных конфигурациях сборки Андроид: singleLine из TextView является nolonger в «Устаревшем»? Функция ChooserActivity не найдена при тестировании Robotium, в то время как ChooserActivity показывает на Nexus 5