19

如何使用新材料组件从按钮中删除等宽字体?

<com.google.android.material.button.MaterialButton
        android:id="@+id/btn_register"
        style="@style/Widget.MaterialComponents.Button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        app:fontFamily="@font/lato"
        app:backgroundTint="@color/white"
        android:textColor="?colorPrimary"
        android:text="Open Register Screen" />

这张图片显示了我想要消除的差异:

4

3 回答 3

50

我发现了问题。它不是等宽字体,它是letterSpacing. 所以我只是添加android:letterSpacing="0"按钮来解决。

于 2018-07-23T16:08:42.307 回答
14

要为所有按钮全局更新字母间距,您应该使用主题:https ://material.io/develop/android/theming/typography/

您可以在主题中重新定义 ?attr/textAppearanceButton 以指向具有您想要的任何 letterSpacing 的不同文本外观。

在您的主题中定义 attr,如下所示:

<style name="Theme.MyApp" parent="Theme.MaterialComponents.Light">
    <item name="textAppearanceButton">@style/TextAppearance.MyApp.Button</item>
</style>

并创建一个新的 TextAppearance 样式:

<style name="TextAppearance.MyApp.Button" parent="TextAppearance.MaterialComponents.Button">
  <item name="android:letterSpacing">0</item>
</style>
于 2018-07-23T21:34:20.080 回答
-2

chỉ cần thêm android:letterSpacing = 0 vào style button của bạn như sau:

<style name="StyleButtonCancelGray" parent="Widget.MaterialComponents.Button.UnelevatedButton">
    <item name="android:textColor">@color/gray80</item>
    <item name="android:insetTop">@dimen/d_0</item>
    <item name="android:insetBottom">@dimen/d_0</item>
    <item name="enforceTextAppearance">@style/TextView.SemiBold</item>
    <item name="backgroundTint">@color/gray80_15</item>
    <item name="android:textAllCaps">false</item>
    <item name="android:letterSpacing">0</item>
</style>

Trong 标签 Button của bạn, áp dụng nó:

<com.google.android.material.button.MaterialButton
        android:id="@+id/btnCancelFilter"
        style="@style/StyleButtonCancelGray"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginHorizontal="@dimen/d_7"
        android:stateListAnimator="@null"
        android:text="@string/cancel_filter"
        android:textSize="@dimen/font_size_16"
        app:cornerRadius="@dimen/d_6"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/btnConfirmFilter"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
于 2020-12-03T04:44:40.187 回答