2013-01-24 30 views
13

में पैडिंग अंतर एंड्रॉइड में कस्टम बटन प्रदर्शित करने के लिए निम्न कोड है। दुर्भाग्यवश, उन अलग-अलग स्थानों पर उन सभी पैडिंग मानों को केवल एंड्रॉइड 2.3 के लिए बटन प्रदान करने के तरीके को प्रभावित करते हैं, लेकिन एंड्रॉइड 4.X पर इसका कोई प्रभाव नहीं पड़ता है, यानी आप जो भी सेट करते हैं, उसके बावजूद पैडिंग हमेशा समान होती है। क्यूं कर?खींचने योग्य पृष्ठभूमि के साथ कस्टम बटन: एंड्रॉइड 4 बनाम एंड्रॉइड 2.3

लेआउट एक्सएमएल:

<Button 
    android:id="@+id/sample_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_caption" 
    android:padding="6dp" 
    android:layout_marginBottom="6dp" 
    android:layout_marginRight="6dp" 
    style="@style/CustomButton" 
    android:textSize="16sp" /> 

शैली:

<style name="CustomButton"> 
    <item name="android:layout_gravity">center_horizontal</item> 
    <item name="android:padding">6dp</item> 
    <item name="android:background">@drawable/custom_button</item> 
    <item name="android:textColor">#ffffff</item> 
    <item name="android:gravity">center</item> 
    <item name="android:textStyle">bold</item> 
</style> 

drawable:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
     <shape> 
      <solid 
       android:color="#60ff0000" /> 
      <stroke 
       android:width="1dp" 
       android:color="#ffffff" /> 
      <corners 
       android:radius="4dp" /> 
      <padding 
       android:left="6dp" 
       android:top="6dp" 
       android:right="6dp" 
       android:bottom="6dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <solid 
       android:color="#90ff0000" /> 
      <stroke 
       android:width="1dp" 
       android:color="#ffffff" /> 
      <corners 
       android:radius="4dp" /> 
      <padding 
       android:left="6dp" 
       android:top="6dp" 
       android:right="6dp" 
       android:bottom="6dp" /> 
     </shape> 
    </item> 
</selector> 

जब मैं सेट सभी एचटीएमएल ई पैडिंग वैल्यू जैसे छोटे मूल्य पर 2, बटन एंड्रॉइड 2.3.3 (शायद सही) पर पैडिंग के बिना लगभग दिखाया गया है लेकिन एक पैडिंग के साथ जो एंड्रॉइड 4.X (शायद गलत) पर अभी भी बहुत बड़ा है। क्या कोई देख सकता है क्यों?

उत्तर

31

एंड्रॉइड की होलो थीम system styles.xml resource for Holo.Widget.Button में एक मिनीविड्थ और मिनहाइट सेट करती है जो गैर-होलो बटन, Widget.Button द्वारा उपयोग किए गए लोगों के अतिरिक्त नियम निर्दिष्ट करती है। यहां तक ​​कि एक छोटे बटन शीर्षक के साथ, बटन एंड्रॉइड 4.2 में 64x48dip ले जाएगा।

<Button 
    android:id="@+id/sample_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Z" 
    android:padding="6dp" 
    android:minHeight="1dp" 
    android:minWidth="1dp" 
    android:layout_marginBottom="6dp" 
    android:layout_marginRight="6dp" 
    style="@style/CustomButton" 
    android:textSize="16sp" /> 
+3

मदद करने में खुशी - इस कहानी का नैतिकता हमेशा डिफ़ॉल्ट व्यवहार के बारे में संकेतों के लिए गिथब पर स्टाइल/कोड की जांच करना है। –

+0

हां, वह मिला;) – caw

0

डेविड का जवाब वास्तव में मुद्दा हो सकता है।

हालांकि, मुझे लगता है कि अगर न्यूनतम चौड़ाई और ऊंचाई 48/64 डीपी है, तो 6 डीपी से 2 पीडी तक पैडिंग बदलना या इसके विपरीत एक बड़ा अंतर नहीं करना चाहिए, जब तक कि आप वास्तविक बटन पहले से ही 48/64 डीपी पर सही न हों आकार।

यदि ऐसा है, तो मुझे आश्चर्य है कि यह एंड्रॉइड पर एक बग हो सकता है। यदि दृश्य पर कोई पैडिंग निर्दिष्ट नहीं है, तो पृष्ठभूमि खींचने योग्य में पैडिंग का उपयोग किया जाता है (यदि कोई हो) यदि दृश्य पर पैडिंग निर्दिष्ट है, तो पृष्ठभूमि खींचने योग्य किसी भी पैडिंग को अनदेखा किया जाता है और दृश्य पर पैडिंग सेट का उपयोग किया जाता है।

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

+0

आप सही हो सकते हैं। '@ String/button_caption' के मान को जानने के बिना और मार्को को जो देखता है उसे देखकर, कोई केवल अनुमान लगा सकता है। मैं मानता हूं कि यह एक बग हो सकता है, हालांकि अगर मैं खींचने योग्य पैडिंग कर रहा था तो मुझे आश्चर्य होगा। वह पैडिंग मान केवल पृष्ठभूमि के चित्र को प्रभावित करना चाहिए। –

+0

धन्यवाद! यह एक बग हो सकता था, आप सही थे। मुझे इसे जांचना पड़ा - और यह * नहीं * है। सबकुछ ठीक काम कर रहा है और इस मुद्दे की व्याख्या डेविड ने लिखी है। – caw