2016-05-04 33 views
5

Sto provando a impostare l'effetto di elevazione e ripple allo stesso tempo su un ImageButton. Sono in esecuzione LOLLIPOP.Utilizzo di elevazione e ripple in ImageButton

Ecco il codice:

<android.support.v7.widget.AppCompatImageButton 
      xmlns:app="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:elevation="5dp" 
      android:background="?attr/selectableItemBackgroundBorderless" 
      app:srcCompat="@drawable/add" /> 

Il mio tema è: Theme.AppCompat.Light.DarkActionBar

Con questo codice sto ottenendo soltanto il ripple. Se rimuovo lo sfondo (ripple), ottengo l'elevazione.

Modificato:

Nota: Tutte le schermate sono state prese con l'immagine viene cliccato (una pressione prolungata).

Ho provato con il android:background="?attr/selectableItemBackground" e ho ottenuto un ripple e lo sfondo è un quadrato, ma non elevazione:

con la android:background="?attr/selectableItemBackgroundBorderless" ho ottenuto un ripple con sfondo circolare, ma senza elevazione :

senza lo sfondo attribuiscono ho ottenuto l'elevazione, e lo sfondo di default ImageButton:

cosa ho bisogno è una circolare sfondo ondulazione ed elevazione allo stesso tempo.

+0

Stai utilizzando uno sfondo senza bordi. Un elemento senza bordi non avrà un'ombra. Ecco perchè. – Budius

+0

quale tema stai usando? – Lemao1981

+0

Ho aggiornato la domanda con quell'informazione. – jzeferino

risposta

1

Come le ombre, le increspature senza bordi sono proiettate sulla superficie madre più vicina, il che significa che non possono proiettare ombre. Prendi in considerazione l'utilizzo di un'ondulazione con bordi invece:

android:background="?attr/selectableItemBackground" 
+0

Grazie per la risposta, per favore, dai un'occhiata alla domanda modificata. – jzeferino