2014-04-20 7 views
6

यहाँ समस्या देखते हैं मैच के लिए, सलेटी रंग का चेकबॉक्स ऊपर और कार्रवाई बार के नीचे से कमरे में छोड़ देता है: small actionbar iconसेट ActionBar आइकन ऊंचाई ActionBar ऊंचाई

styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
<style name="CustomActionBarTheme" parent="Theme.Base.AppCompat.Light"> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:actionButtonStyle">@style/ActionButtonStyle</item> 
</style> 

<!--<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">--> 
<style name="ActionButtonStyle" > 
    <item name="android:height">@dimen/abc_action_bar_default_height</item> 
    <item name="android:layout_height">@dimen/abc_action_bar_default_height</item> 
</style> 

मैंने इस तरह की वस्तु सेट की है:

getMenuInflater().inflate(R.menu.submit_action, menu); 

submit_action इस तरह दिखता है:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item android:id="@+id/action_submit" 
     android:icon="@drawable/check" 
     app:showAsAction="always" /> 
</menu> 

और आखिरकार, संलग्न @ ड्रायबल/चेक का उपयोग किया जा रहा है।

enter image description here

किसी भी विचार कैसे मैं जाँच ActionBar को भरने के लिए मिल सकता है?

उत्तर

4

आपका आइकन ActionBar भरने का कारण यह नहीं है कि ActionMenuItemView आइकन को कैसे मापता है।

ActionMenuItemView invokes एक maximum size of 32dp जब यह sets the bounds for your icon

तो, यह इतना अंतर कैसे बड़े अपनी छवि है बनाता है, सिस्टम हमेशा इसका आकार बदल जाएगा।

कोई विचार है कि मैं एक्शनबार भरने के लिए चेक कैसे प्राप्त कर सकता हूं?

आप अपने MenuItem, एक कोई पृष्ठभूमि के साथ चेक मार्क आइकन के लिए एक कार्रवाई लेआउट का उपयोग करना चाहिए, और आप मनचाहे ढंग से कार्रवाई लेआउट माता पिता की पृष्ठभूमि का रंग बदल जाते हैं। यहाँ एक उदाहरण है:

लेआउट

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    style="?android:attr/actionButtonStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#e8e8e8" 
    android:clickable="true" 
    android:contentDescription="@string/cd" > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:contentDescription="@null" 
     android:scaleType="centerInside" 
     android:src="@drawable/ic_action_tick" /> 

</RelativeLayout> 

MenuItem

<item 
    android:id="@+id/action_submit" 
    android:actionLayout="@layout/your_action_layout" 
    android:showAsAction="always"/> 

पहुँच क्षमता

यह सुनिश्चित करें कि आपके MenuItem पहुँचा जा सकता है बनाने के लिए महत्वपूर्ण है। आम तौर पर जब आप ActionBar में एक आइटम को लंबे समय तक दबाते हैं तो एक छोटा Toast आपके लिए सामग्री विवरण प्रदर्शित करेगा, लेकिन जब आप कस्टम MenuItem का उपयोग कर रहे हैं तो यह इस पैटर्न को लागू करने के लिए आपके ऊपर है।ऐसा करने का एक आसान तरीका Roman Nurik's CheatSheet का उपयोग कर है। यदि आप अनिश्चित हैं कि इसका उपयोग कैसे करें, तो आपको my answer here का संदर्भ लेना चाहिए जो कस्टम MenuItem लेआउट बनाने पर अधिक जानकारी देता है।

वैकल्पिक रूप से

आप हर MenuItem आप के लिए है कि पृष्ठभूमि रंग का उपयोग करना चाहते हैं, तो आप एक कस्टम शैली बनाने और android:actionButtonStyle विशेषता का उपयोग कर इसे लागू कर सकते हैं।

आपका शैली

<style name="Your.ActionButton" parent="@android:style/Widget.Holo.Light.ActionButton"> 
    <item name="android:background">#e8e8e8</item> 
</style> 

आपका विषय

<style name="Your.Theme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionButtonStyle">@style/Your.ActionButton</item> 
</style> 

परिणाम

Example

: यहाँ इस बात का एक उदाहरण है परिणामस्वरूप
+0

आपके उदाहरण में ic_action_tick क्या है? – tipu

+0

@tipu [androidicons] से चेक मार्क आइकन (http://www.androidicons.com/)। – adneal

+0

मैंने आपके कोड verbatim का पालन किया (मेरी शैलियों के ऊपर परिवर्तन के साथ) गतिविधि एक्शनबार में एक चेक के बजाय, इलिप्सिस के साथ शुरू होता है। – tipu

-1

आकार बदलने के लिए एंड्रॉइड में आइकन के साथ मैं यह करता हूं। आपके पास res/drawable- फ़ोल्डर्स के साथ एक मौजूदा प्रोजेक्ट है। आपको सही आइकन को सही फ़ोल्डर में रखना होगा।

एक नया प्रोजेक्ट विज़ार्ड प्रारंभ करें और जब आप उस आइकन में लॉन्चर आइकन पर जाएं जो आप अपने मौजूदा प्रोजेक्ट में उपयोग करना चाहते हैं। जादूगर खत्म करो। जादूगर आपके लिए विभिन्न आकार के प्रतीक बना देगा। फिर मैं अपने मौजूदा प्रोजेक्ट पर संबंधित फ़ोल्डर में res/drawable-xdpi res/drawable-ldpi आदि से आइकन मैन्युअल रूप से कॉपी करता हूं। नई परियोजना को हटाएं जिसे अब इसकी आवश्यकता नहीं है।

+0

वे एक्शनबार में सही ढंग से दिखाई देंगे? मैंने एक बड़े चेकबॉक्स चित्र में प्रवेश किया है, इसलिए चित्र आकार के ऊपर होना चाहिए, यह एक्शन बार क्यों भर नहीं पाएगा? – tipu

+0

ओएस में कम से कम आइकन का चयन करने के लिए सही आकार होंगे। चाहे वह एक्शनबार को वास्तविक आइकन और इसकी रिक्त स्थान से भरना है। शुरू करने के लिए एक अच्छी जगह डेवलपर.andoroid.com से आइकन लोड करना है। जब आप फ़ाइल को अनजिप करते हैं तो वे पहले से ही सही ढंग से आकार में होते हैं और यह सही फ़ोल्डर्स होते हैं। – danny117

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