2012-12-11 39 views
10

我的目標是增加縱向模式下的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預期的效果。

enter image description here

然而,就我旋轉屏幕到肖像模式高度的變化,像這樣。

enter image description here

注意我做出以下代碼調用。

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

我正在使用android 4.2開發Nexus 7。

如何在橫向模式下以縱向模式獲得相同的80dp高度?

+0

我遇到過同樣的問題,我想知道你是否也使用這個「反射破解」來強制嵌入式標籤在操作欄中。 – mdelolmo

回答

10

您寫道:

我如何在我在橫向模式肖像模式相同80dp高度?

通過設置Application主題屬性android:actionBarSizeActionBar.TabView style屬性android:minHeight(或height)80浸。

一個基本的例子:

<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" > 

添加某些選項卡的動作條在活動:

@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浸肖像模式下的身高:

enter image description here

和製表符80浸高度在橫向模式下:

enter image description here

編輯:

對於這個例子,在清單SDK版本被設置爲:

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

根據OP,該示例工程w ith這些SDK設置。但是,如果targetSkdVersion被設置爲16或17,則該示例不起作用。 OP已經提交了一個bug report:

+1

我在一個新的示例項目中嘗試了您的建議。我把它運行在我的nexus 7和仿真器上。他們都沒有像肖像模式中的高度圖片那樣產生結果。在縱向模式下,高度仍然小於橫向模式下的高度。 – ericharlow

+0

我已經把它作爲一個項目上傳到github上:https://github.com/GunnarKarlsson/TabHeightTest。試試它是否會在你的連線7上產生預期的結果。我的屏幕截圖來自運行4.03的Galaxy S2。 –

+2

感謝您的項目!所以你的項目和我的區別在AndroidManifest.xml中。如果您將skd版本更改爲16或17,則停止工作。如果將skd版本更改爲16或17,則停止工作。我將爲android團隊提交錯誤報告。 – ericharlow