提示字体系列在 TextInputLayout 中无法正常工作

Pri*_*uid 6 android android-layout material-design material-components-android

我正在尝试为提示和文本创建不同的字体样式。与此类似的东西 。

到目前为止我的代码:

 <com.google.android.material.textfield.TextInputLayout
    android:id="@+id/filledTextField2"
    style="@style/Widget.TextInputLayout.Primary"
    android:layout_width="233dp"
    android:layout_height="93dp"
    android:layout_marginTop="216dp"
    android:hint="FIRST NAME"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="@style/InputTextFont"
        android:textSize="@dimen/text_input_font_size" />

</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

样式.xml

 <style name="Widget.TextInputLayout.Primary" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="hintTextAppearance">@style/TextAppearance.App.Caption</item>
    <item name="boxStrokeColor">@color/colorPrimary</item>
    <item name="android:textColorHint">@color/colorSecondary</item>
    <item name="hintTextColor">@color/colorPrimary</item>
    <item name="boxStrokeWidth">@dimen/text_input_box_width</item>
</style>

 <style name="TextAppearance.App.Caption" parent="TextAppearance.AppCompat.Caption">
    <item name="fontFamily">@font/poppins_bold</item>
    <item name="android:fontFamily">@font/poppins_bold</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:textSize">15sp</item>
</style>

  <style name="InputTextFont" parent = "">
    <item name="fontFamily">@font/poppins_regular</item>
    <item name="android:fontFamily">@font/poppins_regular</item>
    <item name="android:textSize">@dimen/text_input_font_size</item>
</style>
Run Code Online (Sandbox Code Playgroud)

稍微玩了一下代码后,“TextAppearance.App.Caption”中的字体大小似乎可以正常工作,这意味着提示的字体大小可以正确更改,但字体系列却不能。但是,如果我在“TextInputEditText”中使用“android:fontFamily=”@font/poppins_bold”,它会起作用,但提示和文本都会变得相同。

我的问题是如何覆盖它们以使用自定义字体?如果有人帮助我,那将是一个很大的帮助!蒂亚!

Dim*_*des 5

根据此线程,在 XML 文件中设置字体将不起作用,因为它总是被内部EditText样式覆盖。

HintTextAppearance目前 Kotlin 中的临时解决方法是在创建布局后设置:

yourInputLayout.doOnLayout { 
    yourInputLayout
    .setHintTextAppearance(R.style.YourHintStyle)
}
Run Code Online (Sandbox Code Playgroud)

如果您要重用它,将其转换为扩展方法总是好的:

fun TextInputLayout.setHintStyle(id: Int) {
    doOnLayout {
        setHintTextAppearance(id)
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

yourInputLayout.setHintStyle(R.style.YourHintStyle)
Run Code Online (Sandbox Code Playgroud)