2015-02-27 17 views
65

Chcę usunąć cień z przycisku, aby wydawał się bardziej płaski.Jak usunąć cień przycisku (Android)

mam to teraz:

cancel button with shadow

Ale chcę to:

cancel button without shadow

+0

piszę komentarz tutaj, to praca dla mnie. [http://stackoverflow.com/questions/27867284/remove-shadow-effect-on-android-button/30856094 # 30856094] [1] [1]: http://stackoverflow.com/questions/27867284/remove-shadow-effect-on-android-button/30856094#30856094 – msamardzic

+0

http: // stackoverflow. com/questions/27408240/cant-get-rid-of-shadow-under-android-button – smileVann

Odpowiedz

219

Ano Ther Alternatywą jest dodanie

style="?android:attr/borderlessButtonStyle" 

do przycisku xml jako udokumentowane tutaj http://developer.android.com/guide/topics/ui/controls/button.html

Przykładem może być

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

Spowoduje to usunięcie stylu przycisku, np. cień i płaskorzeźby. Dodawanie selektora z kształtami jest opcjonalne. To jest dokładniejsza odpowiedź. –

+0

To powinna być zaakceptowana odpowiedź. – pblead26

+14

Dodatkowo używam niestandardowego stylu dla mojego przycisku. możesz rozszerzyć swój niestandardowy styl z: Tobliug

6

Używanie go jako tło dla swojego przycisk może pomóc, zmienić kolor do Twoich potrzeb

<?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

Czy możesz wyjaśnić, jak to działa? Nie usunięto dla mnie cienia – CACuzcatlan

+0

zastępuje oryginalne tło z cieniami, z tym tło z jednolitym kolorem – dlohani

28

użyć niestandardowego stylu

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

Spróbuj: android:stateListAnimator="@null"

+3

Chociaż może to rozwiązać problem PO, zalecam dodać do niego jakiś kontekst. Dlaczego to pomoże? Ponadto, "spróbuj tego" jest nieco mylące. Jesteś pewien, że to rozwiąże problem lub po prostu zgadniesz? Jeśli tak, powinieneś zamiast tego napisać komentarz. – GergelyPolonkai

37

Prostszy sposób to zrobić jest dodanie tego tagu do przycisku:

android:stateListAnimator="@null" 

choć wymaga to poziom API 21 lub więcej ..

+0

Pracowałem dla mnie bardzo dobrze –

3

znaku @ Alt-Cat pracę odpowiedź dla mnie!

R.attr.borderlessButtonStyle nie zawiera cienia.

a dokument przycisku jest świetny.

Można również ustawić ten styl na niestandardowym przycisku w drugim konstruktorze.

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

Java

setStateListAnimator(null); 

XML

android:stateListAnimator="@null" 
+0

pracował dla mnie w xml dzięki @Michael –

+0

Łatwy i czysty. – JCasso

2

Zamiast przycisku można użyć TextView i dodaj kliknij słuchacza w kodzie Java.

tj.

w xml układu działalność:

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

w pliku aktywność Java:

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

To nie jest poprawna odpowiedź, ale faktycznie pomogłeś mi rozwiązać problem z podobnym problemem, więc dziękuję! – box

+0

aha! fajny pomysł - szybko mi to naprawię - –

0

android: theme = "@ android: styl/motywy.NoTitleBar”w swojej działalności również może pomóc

Powiązane problemy