Android:自定义字体适用于文本视图,而不是按钮

Android:自定义字体适用于文本视图,而不是按钮,android,button,kotlin,textview,custom-font,Android,Button,Kotlin,Textview,Custom Font,我无法获得使用自定义字体的按钮。 它适用于TextView,而不是按钮(TextView的子类) 我正在使用Android Studio 3.1.2和MinsdkVersion26和Kotlin res/font/font.xml res/layout/fragment.xml 。。。 ... 以上工作。将TextView替换为按钮,它将停止工作 编辑:我想使用自定义字体来保存按钮的图标,而不是使用图像和图像按钮。我们发现自定义字体比图像更易于管理。为按钮添加样式: 在styles.xml

我无法获得使用自定义字体的按钮。 它适用于TextView,而不是按钮(TextView的子类)

我正在使用Android Studio 3.1.2和MinsdkVersion26和Kotlin

res/font/font.xml


res/layout/fragment.xml

。。。
...
以上工作。将TextView替换为按钮,它将停止工作


编辑:我想使用自定义字体来保存按钮的图标,而不是使用图像和图像按钮。我们发现自定义字体比图像更易于管理。

为按钮添加样式:

styles.xml
下创建新样式:

<style name="main_button">
    <item name="android:fontFamily">@font/my-custom-font</item>
    <item name="android:background">@drawable/btn_blue</item>
    <item name="android:textColor">#FFFF</item>
    <item name="android:textAllCaps">false</item>
    <item name="android:foreground">?attr/selectableItemBackground</item>
</style>

在您的样式中使用
app:fontfamine=“@font/my custom font”
,而不是
android:fontfamine=“@font/my custom font”

默认情况下按钮不是粗体的吗?你没有提供一个大胆的风格与你的font@SamuelEminet根据标准,我只能将
fontStyle
设置为
normal
italic
以添加粗体样式添加一种重量约为700的字体
android:fontwweight=“700”
谢谢@SamuelEminet,但我并不是为了使用我的自定义字体而将其设置为粗体。如果我对按钮使用标准字体,它将以正常的重量显示。另外,您的回答给了我一个提示:如果我只是将
android:textAllCaps=“false”
添加到我的按钮上,它确实可以工作。我猜按钮默认使用所有大写字母,到目前为止,我只映射了小写字符。总而言之:虽然使用样式可以为许多按钮指定一次属性,并且可能很有用,但自定义字体确实适用于按钮。@FabioKatz完美!我喜欢使用样式,因为当重复使用同一样式时,复制和粘贴更少!我很高兴这对你有帮助
...
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/myButton"
    android:maxWidth="30dp"
    android:minWidth="30dp"
    android:maxHeight="40dp"
    android:minHeight="40dp"
    android:fontFamily="@font/my-custom-font"
    android:textSize="20dp"
    android:text="a" />
...
<style name="main_button">
    <item name="android:fontFamily">@font/my-custom-font</item>
    <item name="android:background">@drawable/btn_blue</item>
    <item name="android:textColor">#FFFF</item>
    <item name="android:textAllCaps">false</item>
    <item name="android:foreground">?attr/selectableItemBackground</item>
</style>
<Button
    android:id="@+id/id"
    style="@style/main_button" />