如果以编程方式设置提示,则TextInputLayout在聚焦时不显示提示

时间:2017-10-16 22:06:20

标签: android android-support-library android-design-library

我这样做:

<android.support.design.widget.TextInputLayout
                android:id="@+id/inputLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <AutoCompleteTextView
                    android:id="@+id/email"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textEmailAddress"
                    android:maxLines="1"
                    android:singleLine="true"/>
</android.support.design.widget.TextInputLayout>

然后这个:

mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
mEmailView.setHint("Email");

提示显示在EditText上,但在聚焦时不在其上方。我可以在TextInputLayout上设置提示,但我会在EditText内的提示的同时获得提示。这是一个错误还是我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:1)

不要在子EditText上使用setHint(),而应直接在TextInputLayout上调用它:

TextInputLayout textInputLayout = (TextInputLayout)findViewById(R.id.inputLayout);
textInputLayout.setHint("Email");

这应该是开箱即用的,没有额外的&#34; hacks&#34;。

TextInputLayout确实尝试从内部EditText提示初始化其提示,但它仅在创建时执行此操作,如果它没有找到它,则它什么都不做,所以&#39 ;为什么你需要做它&#34;再试一次&#34;致电setHintEnabled() ...

我想文档应该更清楚地描述这种细微差别。

答案 1 :(得分:0)

弄清楚了,对我来说似乎是个错误。

基本上我不得不:

    mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
    mEmailView.setHint("Email");
    TextInputLayout textInputLayout= (TextInputLayout) 
    findViewById(R.id.inputLayout);
    textInputLayout.setHintEnabled(false);
    textInputLayout.setHintEnabled(true);