J'utilise la version supportLibrary = "28.0.0-beta01" .
Voici mon code dans un fichier .xml:
<Android.support.design.button.MaterialButton
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:icon="@drawable/ic_my_orders"
app:iconGravity="textStart"
Android:gravity="center"/>
À mon icône de code du côté gauche localisable du bouton. Je veux placer le bouton au centre. Je veux atteindre ce résultat
Je n'ai pas besoin de vues personnalisées ou de choses codées en dur. S'il s'agit d'un bug (app: iconGravity), j'attendrai la prochaine version.
Le bug corrigé dans la version 28.0.0-rc01 , il suffit de changer la version.
L'extrait de code que vous avez dans votre question d'origine est correct. Cela a été identifié comme un bug et sera corrigé dans la prochaine version.
Vous pouvez utiliser la largeur de wrap_content pour qu'elle corresponde à votre texte. Et layout_gravity au lieu de gravité pour définir le bouton sa propre gravité (et non ses enfants).
<Android.support.design.button.MaterialButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
app:icon="@drawable/ic_my_orders"
app:iconGravity="textStart"
Android:layout_gravity="center"/>
[~ # ~] mis à jour [~ # ~]
Essayez ce code pour définir le remplissage gauche du bouton pour le centrer.
<Android.support.design.button.MaterialButton
Android:id="@+id/material_button"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginBottom="8dp"
Android:gravity="center_vertical|start"
Android:text="CENTER"
Android:textColor="@Android:color/white"
app:icon="@drawable/ic_location_on_accent_24dp"
app:layout_constraintBottom_toBottomOf="parent" />
Java
final MaterialButton button = root_view.findViewById(R.id.material_button);
button.post(new Runnable() {
@Override
public void run() {
int width = button.getWidth();
button.measure(0,0);
int paddingleft = (width - button.getMeasuredWidth() + 50)/2; //50 drawable width
button.setPadding(paddingleft,0,0,0);
}
});