web-dev-qa-db-ja.com

materialButtonアイコンを中央に設定する方法

私はsupportLibrary = "28.0.0-beta01"バージョンを使用しています。
。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"/>

ボタンの左側にあるドローアブルの私のコードアイコンに。ボタンを中央に設定します。 この結果を達成したいenter image description here


編集

カスタムビューやハードコードされたものは必要ありません。これがバグ(app:iconGravity)の場合、次のリリースを待ちます。

編集

バージョンで修正されたバグ28.0.0-rc01、バージョンを変更するだけです。

11

元の質問にあるコードスニペットは正しいです。これはバグとして特定されており、今後のリリースで修正される予定です。

5
Gautham Sajith

Wrap_contentに幅を使用して、テキストに一致させることができます。また、重力の代わりにlayout_gravityを使用して、ボタンに(子ではなく)独自の重力を設定します。

<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

[〜#〜] updated [〜#〜]

このコードを試して、ボタンの左パディングを中央に設定します。

 <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);
        }
    });

[〜#〜] output [〜#〜]
enter image description here