एंड्रॉइड में बटन के चारों ओर पैडिंग कैसे निकालें?


184

मेरे Android एप्लिकेशन में, मेरा यह लेआउट है:

<?xml version="1.0" encoding="utf-8" ?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical">

    <fragment
         android:id="@+id/map"
         android:layout_width="match_parent"
         android:layout_height="0dp" 
         android:layout_weight="1" 
         class="com.google.android.gms.maps.SupportMapFragment"/>

    <Button
        android:id="@+id/button_back"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="CloseActivity"
        android:padding="0dp"
        android:text="@+string/back" />

</LinearLayout>

पूर्वावलोकन और फोन पर, ऐसा दिखता है:

जैसा कि आप नीचे क्षेत्र में बटन पर देख सकते हैं, वहां कुछ गद्दी है।

मैं कैसे इससे छुटकारा पा सकता हूं, और बटन को नीचे के क्षेत्र को पूरी तरह से भरने दूंगा?


6
DATerre का उत्तर दो वर्षों के लिए सही है। क्या आप इसे चिह्नित कर सकते हैं?
JohnnyLambada

1
इस प्रश्न को बेहतर शीर्षक के लिए संपादन की आवश्यकता है। यह Google खोज व्हिइल में पहला परिणाम बन गया है जो वास्तव में इस सवाल का जवाब नहीं देता है।
SOFe

जवाबों:


432

मेरे लिए यह समस्या कुछ एंड्रॉइड थीम पर माइनहाइट और मिनिविथ हो गई।

बटन तत्व पर, जोड़ें:

<Button android:minHeight="0dp" android:minWidth="0dp" ...

या आपके बटन की शैली में:

<item name="android:minHeight">0dp</item>
<item name="android:minWidth">0dp</item>

5
कुछ समय लगा जब तक मुझे एहसास हुआ कि मैं कुछ अजीब तरह के गद्दी व्यवहार नहीं कर रहा हूँ, बल्कि मिनीहाइट।
पीजूसन

7
मुझे नहीं लगता कि यह उत्तर वास्तव में मूल प्रश्न का उत्तर देता है। लेकिन मुझे अभी भी खुशी है कि मैं इसके पार आ गया क्योंकि मैं यह पता नहीं लगा सका कि Buttonइसके स्थापित करने के बाद भी मेरी जगह इतनी अधिक क्यों थी android:background="@null"। तथ्य यह है कि Buttonडिफ़ॉल्ट शैली जिम्मेदार है एक बहुत अच्छा टिप है।
टोनी चैन

यह महत्वपूर्ण है कि दोनों Android का उपयोग करें: minHeight = "0dp" android: minWidth = "0dp", और उनमें से केवल एक ही नहीं।
रिकार्डो

यह एंड्रॉइड नौगट पर बटन से गोल कोने और लहर प्रभाव को हटाता है, किसी भी विचार यह व्यवहार क्या हो सकता है?
rrallvv

इस जवाब ने एक समस्या को हल कर दिया ग्रिद्दयौट वाले बटनों के साथ ऑटोसेज़ ऑप्शन के साथ टेक्स्ट बर्सक पर जा रहा है क्योंकि मैंने पंक्तियों / कॉलमों में फिट होने के लिए अधिक बटन प्राप्त करने की कोशिश की। सरल उत्तर जो मुझे ढूंढने में लंबा समय लगा ...
माइक हनफी

71

मेरा समाधान 0 insetTop और insetBottom गुणों के लिए सेट किया गया था।

<android.support.design.button.MaterialButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="@string/view_video"
        android:textColor="@color/white"/>

1
यही मेरे लिए भी समस्या का हल है! धन्यवाद!
एसपीएम

46

यह पैडिंग नहीं है, इसकी बैकग्राउंड ड्रॉबल में बटन के चारों ओर छाया है। अपनी खुद की पृष्ठभूमि बनाएं और यह गायब हो जाएगा।


6
मैंने किया। गायब नहीं हुआ।
हसन

इसका आकार कैसे मापा जा सकता है?
इमान अकबरी

यह वह है, @Behr, बैकग्राउंड को बटन के रंग में बदलते हुए
Ramon

मुझे बस एहसास हुआ कि मेरी पृष्ठभूमि छवि में पारदर्शी पैडिंग है
फ्रूट

22

-veनिम्नलिखित जैसे हाशिये के मूल्यों का उपयोग करने का प्रयास करने के लिए वर्कअराउंड हो सकता है :

<Button
    android:id="@+id/button_back"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="CloseActivity"
    android:padding="0dp"
    android:layout_marginLeft="-5dip"
    android:layout_marginRight="-5dip"
    android:layout_marginTop="-5dip"
    android:layout_marginBottom="-5dip"
    android:text="@string/back" />

यह उस स्थान को गायब कर देगा। मेरा मतलब है कि आप उचित dipमूल्य चुन सकते हैं , जिससे यह दूर हो जाता है। इसने मेरे लिए काम किया। आशा है कि यह आप के लिए काम करता है।


4
मैं इस समाधान का उपयोग कर सावधान रहना होगा। यह क्या करता है बस नकारात्मक मार्जिन का उपयोग करके बटन पृष्ठभूमि (सीमा + छाया) को छिपा रहा है। स्टाइल परिवर्तन और सीमा + छाया क्या अधिक है तो 5dp? मैं Delyan / Casey Murray समाधान का उपयोग सुरक्षित पक्ष पर करने के लिए करूंगा।
lenrok258

इसके अलावा, नकारात्मक मार्जिन आधिकारिक तौर पर एंड्रॉइड में समर्थित नहीं हैं, इसलिए मैं भी इससे बचता हूं
टिम किस्ट

13

टॉगल बटन के आसपास पैडिंग को हटाने के लिए हमें सेट मिनिडथ और मिनहाइट 0dp की आवश्यकता होती है।android:minWidth="0dp" android:minHeight="0dp"

  <ToggleButton
        android:id="@+id/toggle_row_notifications"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minWidth="0dp"
        android:minHeight="0dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/_5sdp"
        android:textOn=""
        android:textOff=""
        android:background="@android:color/transparent"
        android:button="@drawable/toggle_selector"
        />

बटन के लिए अपनी आकर्षित करने योग्य फ़ाइल को सेट करें जैसे: android:button="@drawable/toggle_selector"

नीचे मेरी toggle_selecter.xmlफाइल है

<?xml version="1.0" encoding="utf-8"?>
     <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:drawable="@drawable/notifications_toggle_on" 
                  android:state_checked="true"/>
            <item android:drawable="@drawable/notifications_toggle_off" 
                  android:state_checked="false"/>
     </selector>

9

मैं एंड्रॉइड में नया हूं लेकिन मेरे पास एक समान स्थिति थी। मैंने वही किया जो @Delyan ने सुझाया और xml लेआउट फ़ाइल में android: background = "@ null" का भी उपयोग किया।



6

मुझे भी यही समस्या थी और ऐसा लगता है कि यह बटन के बैकग्राउंड कलर की वजह से है । पृष्ठभूमि के रंग को दूसरे रंग में बदलने की कोशिश करें जैसे:

android:background="@color/colorActive"

और देखें कि क्या यह काम करता है। यदि आप बटन का उपयोग करना चाहते हैं तो आप एक शैली को परिभाषित कर सकते हैं।


यह बटन की हाइलाइटिंग / एनीमेशन क्षमता को हटा देता है।
अल्तूस

4

यह एक गद्दी नहीं है, लेकिन पृष्ठभूमि की छाया या खींचने योग्य minHeightऔर के साथ एक समस्या है minWidth

यदि आप अभी भी अच्छी लहर को प्रभावित करना चाहते हैं, तो आप निम्न का उपयोग करके अपनी खुद की बटन शैली बना सकते हैं ?attr/selectableItemBackground:

<style name="Widget.AppTheme.MyCustomButton" parent="Widget.AppCompat.Button.Borderless">
    <item name="android:minHeight">0dp</item>
    <item name="android:minWidth">0dp</item>
    <item name="android:layout_height">48dp</item>
    <item name="android:background">?attr/selectableItemBackground</item>
</style>

और इसे बटन पर लागू करें:

<Button 
    style="@style/Widget.AppTheme.MyCustomButton"
    ... />

4

ऊपर और नीचे की गद्दी को हटाने के लिए

<com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="0dp"//to effect the following parameters, this must be added!
        android:insetTop="0dp"
        android:insetBottom="0dp"/>

लेफ्ट और राइट पैडिंग को हटाने के लिए

<com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minWidth="0dp"//to effect the following parameters, this must be added!
        android:insetLeft="0dp"
        android:insetRight="0dp"/>

2

यह पैडिंग, मार्जिन या न्यूनतम / चौड़ाई प्रतीत नहीं होता है। android:background="@null"बटन सेट करने से उसका स्पर्श एनीमेशन खो जाता है, लेकिन यह पता चलता है कि पृष्ठभूमि को उस सीमा पर किसी भी चीज पर फिक्स करना।


मैं वर्तमान में साथ काम कर रहा हूँ:

minSdkVersion 19
targetSdkVersion 23

1

अपने बटन को एक कस्टम पृष्ठभूमि दें: @ drawable / material_btn_blue


0

आप इसे layout_width(height)मापदंडों के साथ भी कर सकते हैं ।

उदाहरण के लिए, मैंने android:layout_height="18dp"कोड के साथ शीर्ष और निचले स्थान को हटा दिया है ।


0

एक मानक बटन का उपयोग पूर्ण चौड़ाई पर नहीं किया जाना चाहिए , यही कारण है कि आप इसका अनुभव करते हैं।

पृष्ठभूमि

यदि आप सामग्री डिज़ाइन - बटन शैली पर एक नज़र डालते हैं, तो आप देखेंगे कि एक बटन में 48dp ऊंचाई पर क्लिक करने का क्षेत्र है, लेकिन किसी कारण के लिए ऊँचाई 36dp के रूप में प्रदर्शित की जाएगी।

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

उपाय

जैसा कि ऊपर उल्लेख किया गया है, आप जो चाहते हैं वह एक अलग पृष्ठभूमि है । एक मानक बटन नहीं है, लेकिन इस अच्छे तरंग प्रभाव के साथ एक चयन करने योग्य आइटम के लिए एक पृष्ठभूमि है।

इस उपयोग के मामले में ?selectableItemBackgroundथीम विशेषता है जिसे आप अपनी पृष्ठभूमि के लिए उपयोग कर सकते हैं (विशेषकर सूचियों में)।
यह एक मंच मानक तरंग (या <21 पर कुछ रंग राज्य सूची) जोड़ देगा और आपके वर्तमान थीम रंगों का उपयोग करेगा।

अपने usecase के लिए आप बस निम्नलिखित का उपयोग कर सकते हैं:

<Button
    android:id="@+id/sign_in_button"
    style="?android:attr/buttonBarButtonStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Login"
    android:background="?attr/selectableItemBackground" />
                   <!--  /\ that's all -->

यदि आपका दृश्य एकमात्र है और पूरे स्क्रीन को फैलाता है, तो लेआउट वज़न जोड़ने की भी आवश्यकता नहीं है

यदि आपके पास कुछ अलग विचार है कि आपकी पृष्ठभूमि कैसी दिखनी चाहिए, तो आपको स्वयं एक कस्टम ड्रॉबल बनाना होगा, और वहां रंग और स्थिति का प्रबंधन करना होगा।

यह उत्तर प्रश्न से कॉपी किया गया है : एंड्रॉइड में बटन के चारों ओर पैडिंग (या मार्जिन?) को ठीक से कैसे हटाया जाए?


0

चारों ओर एकाधिक जवाब खुदाई के घंटों के बाद मैं अंत में एक समाधान है कि एक अलग तत्व का उपयोग नहीं करता, हेरफेर पाया minHeightया minWidth, या यहाँ तक लपेटकर Buttonके चारों ओर एक RelativeLayout

<Button
    android:foreground="?attr/selectableItemBackground"
    android:background="@color/whatever" />

मुख्य टेकअवे यहाँ पृष्ठभूमि के बजाय अग्रभूमि की स्थापना है, क्योंकि बहुत से उत्तर निर्धारित होते हैं। पृष्ठभूमि को बदलना ही selectableItemBackgroundबटन के रंग / पृष्ठभूमि में किए गए किसी भी परिवर्तन को अधिलेखित कर देगा, यदि कोई हो।

अग्रभूमि को बदलने से आपको दोनों दुनिया के सर्वश्रेष्ठ मिलते हैं: "अदृश्य" पैडिंग से छुटकारा पाएं और अपने बटन के डिजाइन को बनाए रखें।


0

आप उपयोग कर सकते हैं सीमा में शैली AppCompatButton नीचे की तरह। और एंड्रॉइड का उपयोग करें : इसके साथ पृष्ठभूमि

शैली = "@ शैली / Widget.AppCompat.Button.Borderless.Colored"

बटन कोड

<androidx.appcompat.widget.AppCompatButton
        android:id="@+id/button_visa_next"
        android:background="@color/colorPrimary"
        style="@style/Widget.AppCompat.Button.Borderless.Colored"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/spacing_normal"
        android:text="@string/next"
        android:textColor="@color/white"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

आउटपुट:

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.