使用设计支持库时,EditText getHint()返回null

dob*_*dog 12 android android-edittext androiddesignsupport

将EditText与Design lib(版本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);
Run Code Online (Sandbox Code Playgroud)

星号覆盖了提示

一个简单的代码示例: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>
Run Code Online (Sandbox Code Playgroud)

Java的:

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

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

以前相关的问题在这里!

Ivo*_*nov 15

实际上提示移动到TextInputLayout围绕EditText视图的父视图:

你可以得到这样的提示:

android.support.design.widget.TextInputLayout parent = (android.support.design.widget.TextInputLayout) yourEditText.getParent();
String hint = parent.getHint().toString();
Run Code Online (Sandbox Code Playgroud)

如果你想添加*make就像这样:

parent.setHint(parent.getHint() + "*");
Run Code Online (Sandbox Code Playgroud)

快乐的编码!:)

  • 请注意,如果您使用`TextInputEditText`,则必须使用`getParent().getParent()`来实际获取`TextInputLayout` (9认同)