2016-01-27 5 views
9

में बैकग्राउंड सेट होने पर बटन बड़ा हो जाता है, जब मैं Button के साथ एक समस्या का सामना करता हूं तो जब मैं android:background एक्सएमएल में विशेषता का उपयोग कर पृष्ठभूमि सेट करता हूं। पृष्ठभूमि सेट करने से पहले, बटन का डिफ़ॉल्ट आकार होता है। लेकिन जब मैं पृष्ठभूमि के रूप में रंग लागू करता हूं, तो यह बड़ा हो रहा है, भले ही मैंने width या height पर अलग-अलग सेट न किया हो।एंड्रॉइड

यह मेरा XML लेआउट इससे पहले कि मैं बटन

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <Button 
     android:background="@color/white" 
     android:layout_gravity="center_horizontal" 
     android:id="@+id/btn_row_option_done" 
     android:text="Done" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:background="@color/white" 
     android:layout_gravity="center_horizontal" 
     android:text="Edit" 
     android:id="@+id/btn_row_option_edit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:layout_gravity="center_horizontal" 
     android:text="Delete" 
     android:id="@+id/btn_row_option_delete" 
     android:background="@color/red" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:layout_gravity="center_horizontal" 
     android:text="Cancel" 
     android:id="@+id/btn_row_option_cancel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

तो रद्द बटन स्क्रीनशॉट में की तरह डिफ़ॉल्ट आकार है करने के लिए पृष्ठभूमि विशेषता सेट है।

enter image description here

लेकिन जब मैं इस

<Button 
     android:background="@color/white" 
     android:layout_gravity="center_horizontal" 
     android:text="Cancel" 
     android:id="@+id/btn_row_option_cancel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

तरह रद्द बटन पर एक रंग सेट फिर बटन डिफ़ॉल्ट आकार से भी बड़ा हो जाता है, भले ही मैं चौड़ाई या ऊंचाई बड़ा नहीं था ।

यह आप ऊपर को रद्द बटन बड़ा हो गया देख सकते हैं स्क्रीनशॉट

है। वास्तव में मैं पृष्ठभूमि रंग स्थापित कर रहा हूँ। पृष्ठभूमि रंग सेट करने के बाद भी मैं डिफ़ॉल्ट आकार प्राप्त करने के लिए इसे कैसे ठीक कर सकता हूं?

enter image description here

उत्तर

7

आप Button के आकार, इसकी चौड़ाई और ऊंचाई के बीच अंतर करने के लिए है, पूरे क्षेत्र में आप पर क्लिक कर सकते हैं, और छवि इस्तेमाल किया बटन प्रदर्शित करने के लिए।

एंड्रॉइड पर डिफ़ॉल्ट बटन के पास एक खींचने के लिए लागू एक पैडिंग है - ऐसा लगता है कि यह छोटा है। यह वास्तव में एक ही आकार है।

यदि आप अपना खुद का ड्रायबल बनाते हैं और कोई पैडिंग लागू नहीं करते हैं, तो पृष्ठभूमि पूरे दृश्य के सीमाओं के भीतर खींच जाएगी, जिससे यह बड़ा प्रतीत होता है।

आप हमेशा डिफ़ॉल्ट बटन का उपयोग कर सकते हैं लेकिन AppCompat का उपयोग करके अपना खुद का रंग लागू कर सकते हैं। यह डिफ़ॉल्ट बटन की पृष्ठभूमि को टिनटिंग का समर्थन करता है।

<android.support.v7.widget.AppCompatButton 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:backgroundTint="#ffaa00"/> <!-- <--- Your color here --> 

... जो आपको एक ही उपस्थिति का उपयोग करने देगा।

+2

@WaiYanHein हाँ, ऊपर बताए गए कारणों के कारण। आप ** पृष्ठभूमि ** को 'रंगीन' के साथ बदल रहे हैं जो * पूरे * दृश्य को भर देगा। रंग बदलने के लिए आपको या तो 'backgroundTint' का उपयोग करने की आवश्यकता है, या कस्टम ड्रॉइंग बनाने और कुछ पैडिंग –

+0

क्षमा करें। इसने काम कर दिया। धन्यवाद। यह घटना मौजूदा जावा कोड तोड़ नहीं है। सही ? –

+0

@WaiYanHein यदि आप AppCompat का उपयोग करते हैं तो यह ठीक काम करेगा। एप कंपैट –

0

यह है क्योंकि आप widht और ऊंचाई के लिए चादर सामग्री का उपयोग कर रहे है।

आपके पास कई विकल्प हैं। त्वरित और सरल तरीका? बटन की तरह डी पी में एक आकार को निर्दिष्ट का मूल्य निर्धारित करें:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <Button 
     android:background="@color/white" 
     android:layout_gravity="center_horizontal" 
     android:id="@+id/btn_row_option_done" 
     android:text="Done" 
     android:layout_width="200dp" 
     android:layout_height="200dp" /> 

    <Button 
     android:background="@color/white" 
     android:layout_gravity="center_horizontal" 
     android:text="Edit" 
     android:id="@+id/btn_row_option_edit" 
     android:layout_width="200dp" 
     android:layout_height="200dp" /> 

    <Button 
     android:layout_gravity="center_horizontal" 
     android:text="Delete" 
     android:id="@+id/btn_row_option_delete" 
     android:background="@color/red" 
     android:layout_width="200dp" 
     android:layout_height="200dp" /> 

    <Button 
     android:layout_gravity="center_horizontal" 
     android:text="Cancel" 
     android:id="@+id/btn_row_option_cancel" 
     android:layout_width="100dp" 
     android:layout_height="100dp" /> 
</LinearLayout> 
+0

मुझे लगता है कि चौड़ाई और ऊंचाई को परिभाषित करना एकमात्र विकल्प है। मैं पैडिंग सेट, काम नहीं कर रहा हूँ। मैंने AppCompat बटन का उपयोग नहीं किया, काम नहीं कर रहा था। –

+0

आप रैखिक लेआउट के बजाय सापेक्ष लेआउट का उपयोग कर सकते हैं साथ ही –

+0

लेकिन यह समाधान उपयोगी नहीं है जब हम बटन के अंदर टेक्स्ट मान नहीं जानते हैं। आम तौर पर जब आप ऐप का अनुवाद करते हैं तो वह मामला होता है। तो यह समाधान आदर्श नहीं है। –

4

XML <Button> टैग में android:backgroundTint विशेषता का उपयोग करें।

तरह:

android:backgroundTint="#6567dc"

<android.support.v7.widget.AppCompatButton> बटन का उपयोग करने की आवश्यकता नहीं।

+0

मुझे एक ही समस्या है लेकिन मुझे पृष्ठभूमि को एक एक्सएमएल फ़ाइल में डिफ़ॉल्ट और साथ ही एंड्रॉइड सेट करना होगा: आइटम दबाए गए आइटम ताकि मैं पृष्ठभूमि टिंट का उपयोग नहीं कर सकूं। तो कोई और सुझाव? –

+0

मैंने आपकी समस्या का समाधान करने की कोशिश की है और मुझे समाधान मिला है, यह कमजोर लग सकता है लेकिन काम करता है। अपने एक्सएमएल में, टैग के अंदर जोड़ें जो रंग आपके ऐप स्क्रीन का पृष्ठभूमि रंग होना चाहिए। इस तरह: <स्ट्रोक एंड्रॉइड: चौड़ाई = "5.5 डीपी" एंड्रॉइड: रंग = "# फफफा" /> –