2012-12-11 21 views
10

के साथ ऊंचाई बदलता है मेरा लक्ष्य चित्र मोड के लिए ActionBar ऊंचाई बढ़ाने के लिए है। मेरी Themes.xml में actionBarSizeनेविगेशन टैब के साथ एक्शनबार स्क्रीन अभिविन्यास

: मैं वर्तमान में

एंड्रॉयड निर्धारित किया है।

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

मैं लैंडस्केप मोड में वांछित प्रभाव जहाँ मैं 80dp को ActionBar ऊंचाई में वृद्धि हुई है मिलता है।

enter image description here

हालांकि, मैं पोर्ट्रेट मोड ऊंचाई इतनी तरह बदल जाता है में स्क्रीन बारी बारी से चला गया।

enter image description here

नोट मैं कोड में निम्नलिखित कॉल करते हैं।

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

मैं एंड्रॉइड 4.2 के साथ नेक्सस 7 पर विकास कर रहा हूं।

मुझे लैंडस्केप मोड में पोर्ट्रेट मोड में 80 डीपी ऊंचाई कैसे मिलती है?

+0

मुझे एक ही समस्या का अनुभव किया है, और मैं सोच रहा था कि क्या आप एक्शन बार में एम्बेडेड टैब को मजबूर करने के लिए "प्रतिबिंब हैक" का उपयोग कर रहे हैं। – mdelolmo

उत्तर

10

आप ने लिखा है:

मैं मैं लैंडस्केप मोड में है पोर्ट्रेट मोड में एक ही 80dp ऊंचाई कैसे मिलता है?

दोनोंApplication विषय विशेषता की स्थापना करके android:actionBarSize औरActionBar.TabView शैली विशेषता 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" > 

एक गतिविधि में ActionBar के लिए कुछ टैब जोड़ें:

@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 डुबकी ऊंचाई के साथ

enter image description here

और टैब:

enter image description here

संपादित करें:

इस उदाहरण के लिए, प्रकट में SDK संस्करण स्थापित किए गए थे करने के लिए:

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

ओपी के मुताबिक, उदाहरण काम करता है इन एसडीके सेटिंग्स के साथ। हालांकि, अगर targetSkdVersion इसके बजाए 16 या 17 पर सेट किया गया है, तो उदाहरण काम नहीं करता है। ओपी ने bug report:

+1

मैंने एक नए नमूना परियोजना में आपके सुझाव की कोशिश की। मैंने इसे अपने नेक्सस 7 और एम्यूलेटर पर चलाया। उनमें से कोई भी पोर्ट्रेट मोड में ऊंचाई की अपनी तस्वीर जैसे परिणाम उत्पन्न नहीं किया। पोर्ट्रेट मोड में ऊंचाई लैंडस्केप मोड में ऊंचाई से भी कम है। – ericharlow

+0

मैंने इसे github के लिए एक प्रोजेक्ट के रूप में अपलोड किया है: https://github.com/GunnarKarlsson/TabHeightTest। कोशिश करें कि यह आपके नेक्सस 7 पर अपेक्षित परिणाम उत्पन्न करता है। मेरी स्क्रीन शॉट्स गैलेक्सी एस 2 से 4.03 चल रही थीं। –

+2

प्रोजेक्ट के लिए धन्यवाद यह काम करता है! तो आपकी परियोजना और खान के बीच का अंतर AndroidManifest.xml में था। <उपयोग-एसडीके एंड्रॉइड: minSdkVersion = "12" एंड्रॉइड: targetSdkVersion = "15" /> यदि आप skd संस्करण को 16 या 17 में बदलते हैं तो यह काम करना बंद कर देता है। मैं एंड्रॉइड टीम के लिए एक बग रिपोर्ट दर्ज करने जा रहा हूं। – ericharlow

संबंधित मुद्दे