2015-01-11 10 views
11

मेरा न्यूनतम और लक्ष्य एसडीके 21 है, और मैं समर्थन लाइब्रेरी का उपयोग नहीं कर रहा हूं।एंड्रॉइड टूलबार लैंडस्केप मोड में बहुत अधिक

मैं नया टूलबार विजेट का उपयोग कर रहा हूं, और आम तौर पर यह काम करता है, मुझे बस जिस तरह से दिखता है उसमें एक गड़बड़ है। क्रिया आइकन पोर्ट्रेट मोड में केंद्रित होते हैं, जबकि लैंडस्केप मोड में टूलबार अधिक होता है, और आइकन केंद्रित नहीं होते हैं। कृपया स्क्रीनशॉट पर एक नज़र डालें (पढ़ लाइनों बनाने के लिए सिर्फ हैं समस्या अधिक दृश्यमान):

  • चित्र:

portrait mode

  • परिदृश्य:

landscape mode

यह कुछ भी नहीं दिख सकता है, लेकिन जब क्रियाएं चुनी जाती हैं (जैसे बार के बाईं ओर 'ऊपर' तीर की तरह) परिणाम यह है कि नीचे कुछ पिक्सेल की एक पट्टी दिखाई दे रही है। मुझे यह दिखने का तरीका पसंद नहीं है।

गतिविधि किसी भी कॉन्फ़िगरेशन परिवर्तन को प्रबंधित नहीं करती है।

  • styles.xml:

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    
        <style name="MyTheme" parent="android:Theme.Material.NoActionBar"> 
         <item name="android:toolbarStyle">@style/MyToolbarStyle</item> 
        </style> 
    
        <style name="MyToolbarStyle" parent="android:Widget.Toolbar"> 
         <item name="android:background">?android:attr/colorPrimary</item> 
         <item name="android:elevation">2dp</item> 
        </style> 
    
    </resources> 
    
  • एक्सएमएल उपयोग:

मैं एंड्रॉयड के साथ चारों ओर खिलवाड़ की कोशिश की: minHeight

यह मेरा कोड है विशेषता, लेकिन इतनी सेटिंग, एस वाई, 30 डीपी ने पोर्ट्रेट मोड में भी आइकन को ऊपर और ऊपर ले जाया।

मैं इस पाया: https://code.google.com/p/android/issues/detail?id=77874 लेकिन कोई attr/actionBarSize ...

कैसे, अगर सब पर, इस समस्या को ठीक किया जा सकता है? स्क्रीनशॉट पर लिया गया फ़ोन एक नेक्सस 6 (xxxhdpi) है, और आइकन Google आइकन पैक से है, और सबसे बड़ा संसाधन xxhdpi है। क्या यह समस्या है?

अद्यतन: उपरोक्त लिंक से कामकाज काम करते समय काम करता है? एंड्रॉइड: attr/actionBarSize। लेकिन, क्या यह एकमात्र तरीका है? इस तरह के एक नए चमकदार घटक के लिए इस तरह के कामकाज की आवश्यकता के लिए थोड़ा गलत लगता है, और भी अधिक है कि वर्कअराउंड को किसी घटक के लिए एक विशेषता मान को प्रतिस्थापित करने की आवश्यकता होती है।

android:height="?android:attr/actionBarSize" 

अपनी उपकरण पट्टी के लिए:

+0

क्या आप जावा कोड में अपना कार्यान्वयन दिखा सकते हैं? इसके अलावा मुझे आपकी शैली का उपयोग नहीं देखा गया? –

+0

इसके लिए कोई प्रासंगिक जावा कोड नहीं है। शैली को पूरे एप्लिकेशन के लिए थीम के रूप में AndroidManifest.xml में सेट किया गया है, इसलिए ऐप में प्रत्येक टूलबार 'MyToolbarStyle' शैली का उपयोग करता है। – wujek

+0

मेरी राय में, टूलबार का उपयोग न केवल किया जाता है क्योंकि हम एक्शनबार का उपयोग करने के लिए उपयोग किए जाते हैं, लेकिन यह बहुत लंबा हो सकता है और अन्य चीजों को आदि के अंदर प्रदर्शित कर सकता है ... क्लासिक एक्शनबार लैंडस्केप ओरिएंटेशन पर आकार में घूमता है और इस प्रकार आइकन को थोड़ा ऊपर ले जाता है। टूलबार का उपयोग करते समय, आइकन अभी भी स्थानांतरित हो जाते हैं, लेकिन आकार निर्दिष्ट करने के लिए आपके ऊपर है। अब यदि आप एक लंबा टूलबार चाहते हैं, तो संभवतः आप टूलबार के आकार को बदलना नहीं चाहते हैं - आपके नियंत्रण से बाहर। केवल निर्दिष्ट "? एंड्रॉइड: attr/actionBarSize" मुझे ठीक लगता है :) – Antimonit

उत्तर

3

उपयोग करने के लिए प्रयास करें।

1

अपनी उपकरण पट्टी शैली में इस जोड़ें:

<item name="maxButtonHeight">?attr/actionBarSize</item> 
0

मैं android.support.v7.widget.Toolbar के साथ एक ही समस्या थी।

मेरे समाधान:

ऊंचाई आप अपनी उपकरण पट्टी के लिए चाहते हैं के साथ एक RelativeLayout में अपनी उपकरण पट्टी रखो। अपने टूलबार लेआउट_हेइट को "wrap_content" पर सेट करें और इसे लंबवत केंद्र में संरेखित करें। मुझे उम्मीद है यह मदद करेगा।

<RelativeLayout 
     android:id="@+id/main_toolbar_relative_layout" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     > 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/main_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
      > 
    </android.support.v7.widget.Toolbar> 
</RelativeLayout> 
संबंधित मुद्दे