如果以编程方式设置提示,则 TextInputLayout 在聚焦时不显示提示
TextInputLayout doesn't show hint when focused if the hint was set programmatically
我正在这样做:
<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
中同时获得提示。这是一个错误还是我做错了什么?
谢谢。
明白了,对我来说似乎是个错误。
基本上我必须:
mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
mEmailView.setHint("Email");
TextInputLayout textInputLayout= (TextInputLayout)
findViewById(R.id.inputLayout);
textInputLayout.setHintEnabled(false);
textInputLayout.setHintEnabled(true);
不要在子 EditText 上使用 setHint()
,您应该直接在 TextInputLayout
上调用它:
TextInputLayout textInputLayout = (TextInputLayout)findViewById(R.id.inputLayout);
textInputLayout.setHint("Email");
这应该开箱即用,无需额外 "hacks"。
TextInputLayout
确实尝试从内部 EditText
提示初始化它的提示,但它只在创建时才这样做,如果找不到它,它什么都不做,所以这就是为什么你需要通过调用 setHintEnabled()
...
使其成为 "try again"
我想文档应该更清楚地描述这种细微差别。
我正在这样做:
<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
中同时获得提示。这是一个错误还是我做错了什么?
谢谢。
明白了,对我来说似乎是个错误。
基本上我必须:
mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
mEmailView.setHint("Email");
TextInputLayout textInputLayout= (TextInputLayout)
findViewById(R.id.inputLayout);
textInputLayout.setHintEnabled(false);
textInputLayout.setHintEnabled(true);
不要在子 EditText 上使用 setHint()
,您应该直接在 TextInputLayout
上调用它:
TextInputLayout textInputLayout = (TextInputLayout)findViewById(R.id.inputLayout);
textInputLayout.setHint("Email");
这应该开箱即用,无需额外 "hacks"。
TextInputLayout
确实尝试从内部 EditText
提示初始化它的提示,但它只在创建时才这样做,如果找不到它,它什么都不做,所以这就是为什么你需要通过调用 setHintEnabled()
...
我想文档应该更清楚地描述这种细微差别。