2012-12-11 13 views
10

Amacım, portre modu için ActionBar yüksekliğini arttırmaktır. Benim Themes.xml içinde actionBarSizeActionBar, ekran yönüyle yüksekliği değiştirir

: Şu anda

android ayarlayın.

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

ben 80dp için ActionBar yüksekliği arttı yatay modda istenen etkiyi olsun.

enter image description here

Ancak, yükseklik şöyle değiştirir portre moduna ekrana döndürmek gitti.

enter image description here

Not kod aşağıdaki arama yapmak.

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

Android 4.2 ile Nexus 7 üzerinde geliştiriyorum.

Yatay modda sahip olduğum dikey modda aynı 80dp yüksekliğini nasıl alabilirim?

+0

dosyalandı. Aynı sorunu yaşadım ve bu "yansıma kesmek" i de kullanıp kullanmadığınızı merak ettim. – mdelolmo

cevap

10

yazmıştın:

nasıl yatay modda sahip dikey modda aynı 80dp yüksekliği alabilirim? hemApplication tema nitelik ayarlayarak

android:actionBarSize ve 80 dip için ActionBar.TabView stil niteliği android:minHeight (veya height).

Basit bir örnek: Manifest'te

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

Seti teması:

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

bir Faaliyet içinde İşlem Çubuğu bazı sekmeler ekleyin:

@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); 
} 

Bu 80 dalış ile sekmeleri üretir dikey modda yükseklik:

yatay modda 80 daldırma yüksekliği

enter image description here

ve sekme:

enter image description here

DÜZENLEME: Bu örnek için

manifest'te SDK sürümleri ayarlanmış için:

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

OP'ye göre, örnek, w bu SDK ayarlarını yapın. Ancak, targetSkdVersion bunun yerine 16 veya 17 olarak ayarlanmışsa, örnek çalışmaz. OP, bug report:

+1

Önerinizi yeni bir örnek projede denedim. Nexus 7'de ve emülatörde koştum. Bunların hiçbiri, portre modundaki yüksekliğinizin resminiz gibi sonuçlar üretmedi. Dikey modda yükseklik, yatay modda hala yükseklikten daha azdır. – ericharlow

+0

Bunu bir proje olarak github'a yükledim: https://github.com/GunnarKarlsson/TabHeightTest. Nexus 7'de beklenen sonuçları üretip üretmediğini deneyin. Ekran görüntülerim 4,03 çalışan Galaxy S2'den geldi. –

+2

Projeniz için teşekkürler! Dolayısıyla, projenizle benimki arasındaki fark AndroidManifest.xml dosyasındaydı. Eğer skd sürümünü 16 veya 17 olarak değiştirirseniz, çalışmayı durdurur. Android ekibi için bir hata raporu göndereceğim. – ericharlow

İlgili konular