EditText在使用devise支持库时,getHint()返回null

将EditText与Design lib(ver 22.2.1)结合使用时,TextInputLayout以编程方式获取提示返回null。

我试图追加星号“*”以编程方式强制字段,因此EditText.getHint()但事实上,它返回null是在这种情况下的问题。

 EditText editText = (EditText) findViewById(R.id.edit2); String hint = String.format("%s *", editText.getHint()); editText.setHint(hint); 

星号覆盖了提示

一个简单的代码插图:Layout.xml:

 <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/edit2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hello_world" android:inputType="text"/> </android.support.design.widget.TextInputLayout> 

Java的:

 EditText editText = (EditText) findViewById(R.id.edit2); if (editText.getHint() == null) throw new AssertionError("Hint should not be null"); 

依赖:编译'com.android.support:design:22.2.1'

以前相关的问题在这里 !

Solutions Collecting From Web of "EditText在使用devise支持库时,getHint()返回null"

实际上,提示移动到EditText视图周围的父视图TextInputLayout

你可以得到这样的提示:

 android.support.design.widget.TextInputLayout parent = (android.support.design.widget.TextInputLayout) yourEditText.getParent(); String hint = parent.getHint().toString(); 

如果你想添加*使它像这样:

 parent.setHint(parent.getHint() + "*"); 

快乐的编码! 🙂

提示与其父级布局相关联

((TextInputLayout)view.getParent())。getHint()

这是固定在devise支持23.0.0但项目必须编译为API 23

的build.gradle

 android { compileSdkVersion 23 buildToolsVersion '23' .... } dependencies{ compile 'com.android.support:appcompat-v7:23.0.0' ... } 

像以前一样在EditText上设置提示:

 <android.support.design.widget.TextInputLayout android:id="@+id/inputField" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hello_world" android:inputType="text"/> 

现在给提示添加一个额外的字符:

 TextInputLayout inputField = (TextInputLayout) findViewById(R.id.inputLayout); String hint = String.format("%s *", inputField.getHint()); inputField.setHint(hint);