Моя цель – увеличить высоту 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, пример не работает. ОП подала отчет об ошибке: