提示的字体系列在 TextInputLayout 中无法正常工作
font family for hint not working properly in TextInputLayout
我正在尝试为提示和文本创建不同的字体样式。类似于
this.
到目前为止我的代码:
<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>
styles.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>
稍微玩了一下代码后,“TextAppearance.App.Caption”中的字体大小似乎可以正常工作,这意味着提示的字体大小可以正确更改,但字体系列没有。但是,如果我在“TextInputEditText”中使用“android:fontFamily="@font/poppins_bold",它会起作用,但提示和文本都会变得相同。
我的问题是如何覆盖它们以使用自定义字体?
如果有人帮助我,那将是一个很大的帮助! TIA!
<style name="InputTextFont">
<item name="android:textColor">#fff</item>
<item name="android:textSize">16sp</item>
<item name="android:fontFamily">"#fonts/myfont.ttf"</item>
</style>
根据 this thread,在 XML 文件中设置字体将不起作用,因为它总是被内部 EditText
样式覆盖。
目前在 Kotlin 中的临时解决方法是在创建布局后设置 HintTextAppearance
:
yourInputLayout.doOnLayout {
yourInputLayout
.setHintTextAppearance(R.style.YourHintStyle)
}
如果您要重用它,将它变成扩展方法总是好的:
fun TextInputLayout.setHintStyle(id: Int) {
doOnLayout {
setHintTextAppearance(id)
}
}
用法:
yourInputLayout.setHintStyle(R.style.YourHintStyle)
我正在尝试为提示和文本创建不同的字体样式。类似于 this.
到目前为止我的代码:
<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>
styles.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>
稍微玩了一下代码后,“TextAppearance.App.Caption”中的字体大小似乎可以正常工作,这意味着提示的字体大小可以正确更改,但字体系列没有。但是,如果我在“TextInputEditText”中使用“android:fontFamily="@font/poppins_bold",它会起作用,但提示和文本都会变得相同。
我的问题是如何覆盖它们以使用自定义字体? 如果有人帮助我,那将是一个很大的帮助! TIA!
<style name="InputTextFont">
<item name="android:textColor">#fff</item>
<item name="android:textSize">16sp</item>
<item name="android:fontFamily">"#fonts/myfont.ttf"</item>
</style>
根据 this thread,在 XML 文件中设置字体将不起作用,因为它总是被内部 EditText
样式覆盖。
目前在 Kotlin 中的临时解决方法是在创建布局后设置 HintTextAppearance
:
yourInputLayout.doOnLayout {
yourInputLayout
.setHintTextAppearance(R.style.YourHintStyle)
}
如果您要重用它,将它变成扩展方法总是好的:
fun TextInputLayout.setHintStyle(id: Int) {
doOnLayout {
setHintTextAppearance(id)
}
}
用法:
yourInputLayout.setHintStyle(R.style.YourHintStyle)