如何为TextInputLayout创建浮动标签粗体

时间:2016-10-19 16:57:54

标签: java android android-layout android-textinputlayout

我有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_width="match_parent"
    android:layout_height="match_parent"
    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_width="match_parent"
        android:layout_height="wrap_content"
        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_width="match_parent"
        android:layout_height="wrap_content" >
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            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样式

之前

enter image description here

自定义hintTextAppearance样式

之后

enter image description here

我可以确认造型效果。因为,如果我以android:textSize样式添加WizardTextInputLayout属性,我可以看到浮动标签文字大小发生了变化。

但是,为什么将浮动标签文本设置为粗体并不起作用?我可以尝试将浮动标签文字加粗吗?

1 个答案:

答案 0 :(得分:0)

更新

设置textinputLayout的自定义字体会影响提示文本的外观和样式,您可以使用setHintTextAppearance(int resId) TextInputLayout方法,提供自定义文本样式xml,克服这个问题。

原始答案

您可以创建一个自定义类来扩展TextInputLayout类并覆盖setTypeFace()方法:

    @Override
public void setTypeface(@Nullable Typeface typeface) {
    setTypeface(Your_Bold_typeface);
}

您应该在其中设置从所需字体的粗体版本创建的字体。