बटन छाया कैसे निकालें (Android)


168

मैं बटन को छाया से निकालना चाहता हूं ताकि यह अधिक सपाट हो।

मेरे पास अभी यह अधिकार है:

छाया के साथ बटन रद्द करें

लेकिन मैं यह चाहता हूं:

छाया के बिना बटन रद्द करें


मैं यहां टिप्पणी लिखता हूं, यह मेरे लिए काम करता है। [ stackoverflow.com/questions/27867284/… [1]: stackoverflow.com/questions/27867284/…
msamardzic

जवाबों:


404

एक और विकल्प जोड़ना है

style="?android:attr/borderlessButtonStyle"

अपने बटन xml के रूप में यहाँ पर प्रलेखित http://developer.android.com/guide/topics/ui/controls/button.html

एक उदाहरण होगा

<Button
android:id="@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage"
style="?android:attr/borderlessButtonStyle" />

यह बटन शैली को हटाता है, ईई छाया और एम्बॉस करता है। आकृतियों के साथ चयनकर्ता जोड़ना वैकल्पिक है। यह अधिक सटीक उत्तर है।
जुआन जोस मेलेरो गोमेज़

35
इसके अलावा, मैं अपने बटन के लिए एक कस्टम शैली का उपयोग करता हूं। आप अपनी कस्टम शैली को यहां से आगे बढ़ा सकते हैं: <style name = "MyCustomButtonStyle" जनक = "Widget.AppCompat.Button.Borderless">
तोबलीग

125

इस टैग को आपके बटन में जोड़ने का एक सरल तरीका है:

android:stateListAnimator="@null"

हालाँकि इसके लिए एपीआई स्तर 21 या अधिक की आवश्यकता होती है।


2
मेरे लिए बहुत काम किया
कोरियनकोडकोडर्कर

1
मैं इस विधि को बेहतर प्यार करता हूं, यह अधिक लचीला है।
अय्यजुनी इलेमोबायो किंग्स

@Alon Kogan, क्या android:stateListAnimator विशेषता का उपयोग करने के लिए कोई पिछड़ी संगतता है ?
ब्लरवेयर

यह समाधान आपको शैली से वारिस होने के लिए एक शैली बॉट बनाने की अनुमति देता borderlessButtonStyleहै, जो आपको अधिक लचीलापन देता है।
जुआन जोस मेलेरो गोमेज़

यह केवल एक उपाय है जो मेरे लिए काम किया जाता है,
बॉर्डरलेस बट्टनसेल

61

मैं एक कस्टम शैली का उपयोग करता हूं

<style name="MyButtonStyle" parent="@style/Widget.AppCompat.Button.Borderless"></style>

जोड़ना मत भूलना

<item name="android:textAllCaps">false</item>

अन्यथा बटन पाठ अपरकेस में होगा।



23

प्रयत्न : android:stateListAnimator="@null"


9
यद्यपि यह ओपी की समस्या को हल कर सकता है, मैं इसमें कुछ संदर्भ जोड़ना चाहूंगा। क्यों मदद करेगा? इसके अलावा, "यह प्रयास करें" थोड़ा भ्रामक है। क्या आप सुनिश्चित हैं कि यह समस्या का समाधान करेगा, या सिर्फ अनुमान लगाएगा? यदि हां, तो आपको इसके बजाय एक टिप्पणी लिखनी चाहिए।
गेरगलीपोलोन्काई

इसके लिए एपीआई 21 की आवश्यकता है।
कूलमाइंड


6

आपके बटन की पृष्ठभूमि के रूप में इसका उपयोग करने से आपकी ज़रूरतों के लिए रंग बदल सकता है

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape android:shape="rectangle">
            <solid android:color="@color/app_theme_light" />
            <padding
                android:left="8dp"
                android:top="4dp"
                android:right="8dp"
                android:bottom="4dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/app_theme_dark" />
            <padding
                android:left="8dp"
                android:top="4dp"
                android:right="8dp"
                android:bottom="4dp" />
        </shape>
    </item>
</selector>

4
क्या आप बता सकते हैं कि यह कैसे काम करता है? इसने मेरे लिए ड्रॉप शैडो को नहीं हटाया।
2039 में CACuzcatlan

यह मूल पृष्ठभूमि को छाया के साथ बदल देता है, इस पृष्ठभूमि के साथ ठोस रंग
dlohani

3

@ मेरे लिए Alt-Cat जवाब काम!

R.attr.borderlessButtonStyle में छाया नहीं है।

और बटन का दस्तावेज बहुत अच्छा है।

इसके अलावा, आप इस शैली को अपने कस्टम बटन पर, दूसरे कंस्ट्रक्टर में सेट कर सकते हैं।

    public CustomButton(Context context, AttributeSet attrs) {
        this(context, attrs, R.attr.borderlessButtonStyle);
    }

3

उपरोक्त सभी उत्तर महान हैं, लेकिन मैं एक अन्य विकल्प सुझाऊंगा:

<style name="FlatButtonStyle" parent="Base.Widget.AppCompat.Button">
 <item name="android:stateListAnimator">@null</item>
 <!-- more style custom here --> 
</style>


यह Alon Kogan ( stackoverflow.com/a/39122825/2914140 ) के समान है ।
CoolMind

यह ऊपर के 5ish से कैसे भिन्न है?
शून्य डिबेटर

2

एक बटन के बजाय, आप एक TextView का उपयोग कर सकते हैं और जावा कोड में एक क्लिक श्रोता जोड़ सकते हैं।

अर्थात

गतिविधि लेआउट में xml:

<TextView
    android:id="@+id/btn_text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimaryDark"
    android:text="@string/btn_text"
    android:gravity="center"
    android:textColor="@color/colorAccent"
    android:fontFamily="sans-serif-medium"
    android:textAllCaps="true" />

गतिविधि जावा फ़ाइल में:

TextView btnTextView = (TextView) findViewById(R.id.btn_text_view);
btnTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // handler code
            }
        });

यह सही उत्तर नहीं है, लेकिन आपने वास्तव में एक समान समस्या के साथ मेरे मुद्दे को ठीक करने में मेरी मदद की, इसलिए धन्यवाद!
बॉक्स

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