Düğme gölgesi nasıl kaldırılır (android)


Yanıtlar:


404

Başka bir alternatif de

style="?android:attr/borderlessButtonStyle"

burada belgelendiği gibi Düğme xml'nize http://developer.android.com/guide/topics/ui/controls/button.html

Bir örnek

<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" />

Bu düğme stilini, gölgeyi ve kabartmayı kaldırır. Şekiller içeren bir seçici eklemek isteğe bağlıdır. Bu daha doğru bir cevap.
Juan José Melero Gómez

35
Ayrıca, düğmem için özel bir stil kullanıyorum. özel stilinizi şu adresten uzatabilirsiniz: <style name = "MyCustomButtonStyle" parent = "Widget.AppCompat.Button.Borderless">
Tobliug

125

Bunu yapmanın daha kolay bir yolu, bu etiketi düğmenize eklemektir:

android:stateListAnimator="@null"

API seviye 21 veya daha fazlasını gerektirir.


2
Bana çok çalıştı
KoreanXcodeWorker

1
Bu yöntemi daha çok seviyorum, daha esnektir.
Ayejuni Ilemobayo Kings

@Alon Kogan, bu android:stateListAnimator özelliği kullanmak için geriye dönük uyumluluk var mı?
blueware

Bu çözüm, stilden miras almak zorunda olan bir stil botu oluşturmanıza izin borderlessButtonStyleverir, bu da size daha fazla esneklik sağlar.
Juan José Melero Gómez

Bu sadece benim için çalışan bir çözüm, borderlessButtonStyle etiketi işe yaramadı, çünkü düğmeye basılırken gölgeden kurtulmam gerekiyor
ACAkgul

61

Özel bir stil kullanıyorum

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

Eklemeyi unutma

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

aksi takdirde düğme metni UpperCase'de olacaktır.


59

Kotlin

stateListAnimator = null

Java

setStateListAnimator(null);

XML

android:stateListAnimator="@null"

2
Kolay ve temiz.
JCasso

23

Deneyin : android:stateListAnimator="@null"


9
Bu OP'nin problemini çözebilse de, ona bir bağlam eklemenizi tavsiye ederim. Neden yardımcı olacak? Ayrıca, “bunu dene” biraz yanıltıcı. Sorunu çözeceğinden veya sadece tahmin edeceğinden emin misiniz? Öyleyse, bunun yerine bir yorum yazmalısınız.
GergelyPolonkai

API 21 gerektirir.
CoolMind


6

Bunu düğmenizin arka planı olarak kullanmak yardımcı olabilir, rengi ihtiyaçlarınıza göre değiştirin

<?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
Bunun nasıl çalıştığını açıklayabilir misiniz? Alt gölgeyi benim için kaldırmadı.
CACuzcatlan

orijinal arka plan gölgelerle değiştirir, bu arka plan düz renkle
dlohani

3

@ Alt-Cat cevap benim için çalışıyor!

R.attr.borderlessButtonStyle gölge içermiyor.

ve düğme belgesi harika.

Ayrıca, bu stili ikinci yapıcıdaki özel düğmenizde de ayarlayabilirsiniz.

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

3

Yukarıdaki tüm cevaplar harika, ama başka bir seçenek önereceğim:

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


Alon Kogan'a ( stackoverflow.com/a/39122825/2914140 ) benzer .
CoolMind

bu yukarıdaki 5ish'ten nasıl farklı?
zeroDivider

2

Bir Düğme yerine, bir TextView kullanabilir ve java koduna bir tıklama dinleyicisi ekleyebilirsiniz.

yani

etkinlik düzeninde 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" />

etkinlik java dosyasında:

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

Bu doğru cevap değil, ama aslında sorunumu benzer bir sorunla çözmeme yardım ettin, bu yüzden teşekkür ederim!
kutu

Aha! güzel fikir - bana hızlı bir düzeltme var -
Rohit Kumar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.