2016-05-04 2 views
5

J'essaie de définir l'élévation et l'effet d'entraînement en même temps sur un ImageButton. Je cours LOLLIPOP.Utilisation de l'élévation et de l'ondulation dans ImageButton

Voici le code:

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

Mon thème est: Theme.AppCompat.Light.DarkActionBar

Avec ce code, je suis seulement obtenir l'ondulation. Si je supprime l'arrière-plan (ondulation), je reçois l'élévation.

ÉDITÉ:

Note: Toutes les captures d'écran ont été prises avec l'image étant cliqué (un appui long).

Je l'ai testé avec le android:background="?attr/selectableItemBackground" et je suis une ondulation et l'arrière-plan est un carré, mais pas d'élévation:

avec le android:background="?attr/selectableItemBackgroundBorderless" j'ai eu une ondulation avec un fond circulaire, mais aucune élévation :

sans l'arrière-plan attribut i obtenu l'élévation et l'arrière-plan par défaut ImageButton:

Ce que je besoin est un fond d'ondulation circulaire et élévation en même temps.

+0

Vous utilisez un arrière-plan sans bordure. Un élément sans bordure n'aura pas d'ombre. C'est pourquoi. – Budius

+0

quel thème utilisez-vous? – Lemao1981

+0

J'ai mis à jour la question avec cette information. – jzeferino

Répondre

1

Comme des ombres, des ondulations sans bordure sont projetées sur la surface parent la plus proche - ce qui signifie qu'elles ne peuvent pas projeter d'ombres. Envisagez d'utiliser une ondulation bordée à la place:

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

Merci pour votre réponse, s'il vous plaît, jetez un oeil à la question éditée. – jzeferino