私は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"/>
ボタンの左側にあるドローアブルの私のコードアイコンに。ボタンを中央に設定します。 この結果を達成したい
カスタムビューやハードコードされたものは必要ありません。これがバグ(app:iconGravity)の場合、次のリリースを待ちます。
バージョンで修正されたバグ28.0.0-rc01、バージョンを変更するだけです。
元の質問にあるコードスニペットは正しいです。これはバグとして特定されており、今後のリリースで修正される予定です。
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"/>
[〜#〜] 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);
}
});