web-dev-qa-db-fra.com

comment placer l'icône MaterialButton au centre

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ésultatenter image description here


Éditer

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.

ÉDITER

Le bug corrigé dans la version 28.0.0-rc01 , il suffit de changer la version.

11

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.

5
Gautham Sajith

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"/>
2
Yohan Dahmani

[~ # ~] 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);
        }
    });

[~ # ~] sortie [~ # ~]
enter image description here

0