Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EditText getHint() returns null when using design support library

When using EditText in combination with Design lib's (ver 22.2.1) TextInputLayout getting hint programmatically returns null.

I'm trying to append asterisk '*' to a mandatory field programmatically, hence EditText.getHint() but the fact that it returns null is an issue in this case.

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

Asterisk overlays the hint

A simple code illustration: 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");

dependency: compile 'com.android.support:design:22.2.1'

Previously related issue here!

like image 628
dobridog Avatar asked Jul 30 '15 13:07

dobridog


2 Answers

Actually the hint moves to the parent view TextInputLayout that surrounds the EditText view:

You can get the hint like this:

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

And if you want to add * make it like this:

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

Happy codding! :)

like image 166
Ivo Stoyanov Avatar answered Nov 06 '22 12:11

Ivo Stoyanov


Hint is linked with its's parent layout

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

like image 1
rinkesh Avatar answered Nov 06 '22 10:11

rinkesh