le nouveau bouton matériel de Google est vraiment sympa. Selon le documentation , nous pouvons définir une icône qui est affichée par défaut sur la gauche. Est-ce que quelqu'un sait comment le mettre à droite? Je ne trouve rien à ce sujet.
Merci.
J'ai googlé aujourd'hui le même problème et j'ai trouvé ceci: Android:layoutDirection="rtl"
. Cela fonctionne dans mon projet de test.
Il y a une nouvelle valeur de gravité pour end dans la version 1.1.0-alpha06
Utilisez simplement l'attribut app:iconGravity
ou la méthode setIconGravity()
.
Il nécessite la version 1.1.0 des composants matériels pour Android.
Vous pouvez également utiliser app:iconGravity="end"
.
Toujours selon documentation :
Si une icône alignée au début est ajoutée à ce bouton, veuillez utiliser un style comme l'un des styles ".Icon" spécifiés dans les styles MaterialButton par défaut. Les styles ".Icon" ajustent légèrement le rembourrage pour obtenir un meilleur équilibre visuel. Ce style ne doit être utilisé qu'avec un bouton icône aligné au début. Si votre icône est alignée à la fin, vous ne pouvez pas utiliser un style ".Icon" et devez à la place ajuster manuellement votre rembourrage de sorte que l'ajustement visuel soit reflété.
Utilisez cette méthode d'extension (kotlin) pour chaque bouton:
fun MaterialButton.setRightIcon() {
TextViewCompat.setCompoundDrawablesRelative(this, null, null, this.icon, null)
}
Étendez la classe MaterialButton
pour l'utiliser partout:
class RtlMaterialButton(context: Context, attrs: AttributeSet) : MaterialButton(context, attrs) {
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
updateIcon()
}
private fun updateIcon() {
TextViewCompat.setCompoundDrawablesRelative(this, null, null, icon, null)
}
}
minSDK>=17
)Si vous souhaitez utiliser textStart
gravity pour l'icône, vous pouvez utiliser Android:layoutDirection="rtl"
pour chaque bouton.
ensemble Android:supportsRtl="true"
dans votre application AndroidManifest.xml
dans ton <Application>
tag