2015-05-09 3 views
5

Ich versuche ein Zeichen zu erstellen, das kräuselt, wenn es gedrückt wird, aber wenn view.setSelected(true) aufgerufen wird, hält es eine feste Farbe für einen Hintergrund.Android Hintergrund, der kräuselt, wenn gedrückt, aber einfarbig, wenn ausgewählt?

die folgende Datei in meinem ziehbar-v21-Ordner abgelegt:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true"> 
     <color android:color="@color/green_primary" /> 
    </item> 

    <item android:state_pressed="true"> 
     <ripple android:color="@color/green_primary"> 
      <item android:id="@android:id/mask"> 
       <shape android:shape="rectangle"> 
        <solid android:color="@color/green_selected" /> 
       </shape> 
      </item> 
     </ripple> 
    </item> 
</selector> 

ich die oben ausprobiert habe, und es hat einen soliden Hintergrund, wenn es ausgewählt ist, aber es ist kein Kräuselungeffekt eher eine Art Einblendeffekt. Wenn ich nur die Welligkeit ohne Selektor habe, kräuselt es sich richtig, wenn es gedrückt wird, aber offensichtlich habe ich dann keinen selected Zustand. Wie hätte ich beide in einem einzigen Hintergrund ausschneiden können?

Antwort

10

Was Sie tun müssen, ist:

1. Erstellen Sie eine ripple_effect.xml Datei in drawable-v21 Ordner

<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
     android:color="@color/green_primary"> 
    <item android:drawable="@drawable/green_primary"/> 
</ripple> 

2. button_selector.xml Datei in drawable Ordner erstellen die festlegen ausgewählte Statusfarbe.

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" 
      android:drawable="@color/green_selected"/> 
    <item android:drawable="@drawable/ripple_effect"/> 
</selector> 
+0

Danke. Arbeitete wie ein Charme :-) – spierce7

+0

willkommen ..... :) – iMDroid

+0

wie abgerundete Ecken mit diesen Selektoren und Welligkeit zu umfassen? –