如何使 TextInputLayout 的浮动标签变为粗体
Posted
技术标签:
【中文标题】如何使 TextInputLayout 的浮动标签变为粗体【英文标题】:How to make floating label bold for TextInputLayout 【发布时间】:2017-03-01 10:47:35 【问题描述】:我有一个TextInputLayout
。我尝试应用自定义hintTextAppearance
样式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_
android:layout_
android:paddingLeft="@dimen/wizard_horizontal_margin"
android:paddingRight="@dimen/wizard_horizontal_margin"
android:paddingTop="@dimen/wizard_vertical_margin"
android:paddingBottom="@dimen/wizard_vertical_margin">
<TextView
android:paddingBottom="@dimen/wizard_vertical_margin"
android:text="What's your email address?"
android:layout_
android:layout_
android:textColor="?attr/wizardTextViewColor"
android:textSize="18sp"
android:id="@+id/text_view" />
<android.support.design.widget.TextInputLayout
app:hintTextAppearance="@style/WizardTextInputLayout"
android:id="@+id/text_input_layout"
android:layout_
android:layout_ >
<EditText
android:layout_
android:layout_
android:inputType="textEmailAddress"
android:hint="Email address"
android:id="@+id/email_edit_text" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
我尝试通过应用以下自定义样式使文本变为粗体。
<style name="WizardTextInputLayout" parent="TextAppearance.Design.Hint">
<item name="android:textStyle">bold</item>
</style>
但是,在应用自定义样式之前和之后看起来没有什么不同。
自定义hintTextAppearance
之前的样式
自定义hintTextAppearance
后样式
我可以确认样式有效。因为,如果我在WizardTextInputLayout
样式中添加android:textSize
属性,我可以看到浮动标签文本大小发生了变化。
但是,为什么将浮动标签文本设为粗体不起作用?我可以尝试使浮动标签文本变粗吗?
【问题讨论】:
嘿,哥们,你能解决这个问题吗? 【参考方案1】:更新
由于为 textinputLayout 设置自定义字体会影响其管理的提示文本外观和样式,您可以使用TextInputLayout
的setHintTextAppearance(int resId)
方法,并提供自定义文本样式xml,以解决该问题.
原答案
您可以创建一个自定义类,扩展 TextInputLayout
类并覆盖 setTypeFace()
方法:
@Override
public void setTypeface(@Nullable Typeface typeface)
setTypeface(Your_Bold_typeface);
您应该在哪里设置从所需字体的粗体版本创建的字体。
【讨论】:
它将浮动文本更改为粗体。但是,它也会引入另一个不需要的副作用。它也会改变提示文本的字体(EditText中没有任何内容时的文本)。 您可以使用 textinputlayout.setHintTextAppearance(int resId) 为由它管理的提示提供特定的文本样式。 setHintTextAppearance 只能更改文字大小,不能更改粗体。以上是关于如何使 TextInputLayout 的浮动标签变为粗体的主要内容,如果未能解决你的问题,请参考以下文章
TextInputLayout 和 AutoCompleteTextView