簡體   English   中英

帶圖標的 MaterialButton 不會使文本居中

[英]MaterialButton with icon doesn't center text

我正在嘗試使用 Material Button,我希望在最左邊有一個圖標,然后在中心有一些文本。 但是,例如,當我放入左側的圖標時,我可以清楚地看到文本被推到了右側。 有什么辦法可以避免這種情況嗎? 我希望文本居中,並希望避免為它做一個駭人聽聞的解決方案..

<com.google.android.material.button.MaterialButton
        android:id="@+id/testButton"
        style="@style/RevertedColorDefaultButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="TEST"
        android:textAlignment="center"
        app:icon="@drawable/some_icon"
        app:iconGravity="start"´
        app:iconTint="@color/colorPrimary"
        app:layout_constraintBottom_toTopOf="@id/someOtherButton"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.94" />

有關信息,我用普通按鈕嘗試了同樣的事情,同樣的問題:

<androidx.appcompat.widget.AppCompatButton
        android:id="@+id/test2Button"
        style="@style/RevertedColorDefaultButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:drawableStart="@drawable/some_icon"
        android:drawableTint="@color/colorPrimary"
        android:text="TEST"
        app:layout_constraintBottom_toTopOf="@id/someOtherButton"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.94" />

編輯:添加圖像

在此處輸入圖片說明

對於稍后查看此內容的任何人,我找到了一種方法,通過將圖標的內在寬度作為負填充添加到按鈕

<button>.iconPadding = -(icon?.intrinsicWidth ?: 0)

這是因為文本是由圖標的intrinsicWidth推動的

您可以使用iconGravity屬性來更改圖標的位置:

        <com.google.android.material.button.MaterialButton
            style="@style/Widget.MaterialComponents.Button"
            app:icon="@drawable/ic_add_24px"
            app:iconGravity="textStart"
            android:text="BUTTON"
            />

在此處輸入圖片說明

您還可以使用iconPadding屬性減少文本和圖標之間的填充:

        <com.google.android.material.button.MaterialButton
            app:iconGravity="textStart"
            app:iconPadding="0dp"
            ../>

在此處輸入圖片說明

試試android:textAlignment="center"

我找到了一種無需創建自定義視圖並添加大量自定義布局邏輯即可完成此操作的方法。 MaterialButton似乎有iconiconGravity屬性。 請參閱下面的代碼和示例輸出。 注意:示例代碼中的自定義樣式擴展了Widget.MaterialComponents.Button

<com.google.android.material.button.MaterialButton
    android:id="@+id/signUpButton"
    style="@style/Button.AppTheme.Primary"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Sign up with Email"
    app:icon="@drawable/ic_envelope"
    app:iconGravity="textStart"/>

在此處輸入圖片說明

android:includeFontPadding="false"

這在我的情況下起到了作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM