Comment puis-je avoir un effet d'entraînement dans une mise en page linéaire / relative simple lorsque je touche la mise en page?
J'ai essayé de définir l'arrière-plan d'une mise en page sur quelque chose comme:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight" >
<item android:drawable="@android:color/white"/>
</ripple>
Cependant, je ne vois qu'un fond blanc uni et aucun effet d'entraînement lorsque vous touchez la mise en page. Qu'est-ce que je fais mal?
Éditer:
Pour référence, voici mon fichier xml de mise en page:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="250dp"
android:layout_height="250dp"
android:background="@drawable/test"
android:clickable="true">
</RelativeLayout>
<item android:drawable="@android:color/white"/>
section. Donc je ne sais pas comment cela est censé fonctionner si je voulais une couleur d'arrière-plan sur la mise en page. Poser ceci sur une autre mise en page avec une couleur d'arrière-plan ne fonctionne pas non plus!Réponses:
Définissez ces propriétés sur votre mise en page (si votre mise en page a l'arrière-plan blanc / clair par défaut):
Vous n'avez pas besoin d'un dessin personnalisé dans ce cas.
Cependant, si votre mise en page a un arrière-plan noir / sombre, vous devrez créer votre propre ondulation pouvant être dessinée comme celle-ci:
Et puis définissez cette ripple drawable comme votre propriété android: background .
Vous pouvez voir de nombreux exemples de ces types d'ondulations dans AOSP: ici
la source
background
?J'ajoute ceci en plus de la réponse d' Igor Ganapolsky au cas où quelqu'un voudrait avoir une mise en page avec une couleur différente et avoir également un effet d'entraînement. Vous créez simplement un effet d'entraînement dans les drawables comme ceci:
puis donnez-le comme arrière-plan de votre mise en page ou comme n'importe quel bouton comme Igor Ganapolsky l'a mentionné dans sa réponse.
la source
Vous devez modifier l'extrait de code suivant dans n'importe quel widget (
TextView
/Button
) et vous pouvez implémenter l' effet d'entraînement :Et vous êtes prêt à partir.
la source
Il s'avère que cela fonctionne comme prévu. La valeur colorControlHighlight du thème de matériau standard est
#40ffffff
. Donc, sur un fond blanc, cela n'apparaîtra pas. Changer la couleur de surbrillance en quelque chose d'autre fonctionne et / ou changer la couleur d'arrière-plan de l'objet.Merci à tous (surtout Alanv de m'avoir orienté dans la bonne direction).
la source
colorControlHighlight
votre fichierstyles.xml
. Ajoutez-le à votre thème personnalisé par exemple.Définissez
android:clickable="true"
votre mise en page.la source
Voici un exemple de clic sur un exemple de mise en page avec effet d'entraînement:
la source
Utilisez ce ripple.xml dans le dossier Drawable , puis affectez-le comme View
android: background = "@ drawable / ripple"
android: clickable = "vrai"
la source
Ajoutez simplement un effet d'entraînement par défaut avec
android:background="?selectableItemBackground"
Comme:
la source
Mettez ceci dans votre mise en page:
Remarque: il existe un bogue dans la documentation de l'API. Cela fonctionnera uniquement sur l' API> = 23
Pour tous les niveaux d' API , utilisez cette solution
la source
J'essaie toutes ces réponses et rien n'a fonctionné pour moi, alors j'ai résolu la création du style suivant:
Et puis, j'ai appliqué à ma mise en page linéaire:
la source