android - TextInputLayout 在用户关注它之前不显示 EditText 提示

标签 android material-design android-design-library

我正在使用最近发布的 Android Design Support Library用 EditTexts 显示 float 标签。但是我面临的问题是在呈现 UI 时没有显示 EditText 上的提示,但是在我专注于 EditTexts 后我看到了提示。

我的布局如下:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <ScrollView
        android:id="@+id/ScrollView01"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin">

            <android.support.design.widget.TextInputLayout
                android:id="@+id/name_et_textinputlayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/activity_vertical_margin">

                <EditText
                    android:id="@+id/FeedBackerNameET"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/feedbackname"
                    android:inputType="textPersonName|textCapWords" />
            </android.support.design.widget.TextInputLayout>

            <android.support.design.widget.TextInputLayout
                android:id="@+id/email_textinputlayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <EditText
                    android:id="@+id/FeedBackerEmailET"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/feedbackemail"
                    android:inputType="textEmailAddress" />

            </android.support.design.widget.TextInputLayout>

            <Spinner
                android:id="@+id/SpinnerFeedbackType"
                android:layout_width="fill_parent"
                android:layout_height="48dp"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:entries="@array/feedbacktypelist"
                android:prompt="@string/feedbacktype" />

            <android.support.design.widget.TextInputLayout
                android:id="@+id/body_textinputlayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <EditText
                    android:id="@+id/EditTextFeedbackBody"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/feedbackbody"
                    android:inputType="textMultiLine|textCapSentences"
                    android:lines="5" />

            </android.support.design.widget.TextInputLayout>

            <CheckBox
                android:id="@+id/CheckBoxFeedBackResponse"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:text="@string/feedbackresponse" />

            <Button
                android:id="@+id/ButtonSendFeedback"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:text="@string/feedbackbutton" />
        </LinearLayout>
    </ScrollView>

</FrameLayout>

<View
    android:layout_width="match_parent"
    android:layout_height="5dp"
    android:background="@drawable/toolbar_shadow" />
</FrameLayout>

我也尝试使用 setHint 方法为 TextInputLayout 设置提示,但没有成功。

mNameTextInputLayout = (TextInputLayout) v.findViewById(R.id.name_et_textinputlayout);
mNameTextInputLayout.setErrorEnabled(true);
mNameTextInputLayout.setHint(feedBackerNameET.getHint());

mEmailTextInputLayout = (TextInputLayout) v.findViewById(R.id.email_textinputlayout);
mEmailTextInputLayout.setErrorEnabled(true);
mEmailTextInputLayout.setHint(feedBackerEmail.getHint());

mBodyTextInputLayout = (TextInputLayout) v.findViewById(R.id.body_textinputlayout);
mBodyTextInputLayout.setErrorEnabled(true);
mBodyTextInputLayout.setHint(feedBackBody.getHint());

最佳答案

更新:

这是一个已在库的 22.2.1 版本中修复的错误。

原答案:

正如@shkschneider 所说,这是一个known bug . Github 用户 @ljubisa987 最近发布了 Gist 以寻求解决方法:

https://gist.github.com/ljubisa987/e33cd5597da07172c55d

如评论中所述,该解决方法仅适用于 Android Lollipop 及更早版本。它不适用于 Android M 预览版。

关于android - TextInputLayout 在用户关注它之前不显示 EditText 提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30537413/

相关文章:

android - 硬件加速参数设置为 true 时 Honeycomb 上的 OpenGL 随机崩溃

android - Dagger 2 : NoClassDefFoundError: dagger/producers/ProducerModule

android - Material 设计 : how to get button text to be regular case (not CAPITAL)?

android - TextInputLayout 中的错误文本被键盘覆盖

java - 未捕获的翻译错误 : com. android.dx.cf.code.SimException

android - 5分钟后全部死亡

android - "Ugly"Pre-Lollipop 设备上的 CardView

android - 错误 :(2, 0) 找不到 id 为 'com.github.dcendents.android-maven' 的插件

android - Gridview 不显示/隐藏工具栏

android - 使用谷歌设计库如何在向下滚动时隐藏 FAB 按钮?