从 material 组件的按钮中删除等宽字体
Remove monospace font from button on material components
如何使用新的 material 组件从我的按钮中删除等宽字体?
<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" />
这张图片显示了我要消除的差异:
我发现了问题。它不是等宽字体,它是letterSpacing
。所以我只是在按钮上添加 android:letterSpacing="0"
来解决。
要为所有按钮全局更新字母间距,您应该使用主题:https://material.io/develop/android/theming/typography/
您可以在您的主题中重新定义 ?attr/textAppearanceButton 以指向具有您想要的任何字母间距的不同文本外观。
像这样在您的主题中定义属性:
<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>
只需将 android:letterSpacing = 0 添加到您的按钮样式中,如下所示:
<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>
在您的 Button 标签中,应用它:
<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" />
如何使用新的 material 组件从我的按钮中删除等宽字体?
<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" />
这张图片显示了我要消除的差异:
我发现了问题。它不是等宽字体,它是letterSpacing
。所以我只是在按钮上添加 android:letterSpacing="0"
来解决。
要为所有按钮全局更新字母间距,您应该使用主题:https://material.io/develop/android/theming/typography/
您可以在您的主题中重新定义 ?attr/textAppearanceButton 以指向具有您想要的任何字母间距的不同文本外观。
像这样在您的主题中定义属性:
<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>
只需将 android:letterSpacing = 0 添加到您的按钮样式中,如下所示:
<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>
在您的 Button 标签中,应用它:
<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" />