Reputation: 353
I am trying to get Floating EditText from viewgroup (LinearLayout). Simple EditText Working fine but unable to get with it.
here is my code:
XML code:
<LinearLayout
android:id="@+id/signup_form"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="64dp"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_name"
android:inputType="textPersonName"
android:maxLines="1"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
Java code:
for (int i = 0; i < layout.getChildCount(); i++) {
View v = layout.getChildAt(i);
if (v instanceof EditText) {
EditText editText = (EditText) v;
if (editText.getInputType() == InputType.TYPE_TEXT_VARIATION_PERSON_NAME + 1) {
isValid = validateName(et_name);
if (!isValid) {
break;
}
}
This ( android.support.design.widget.TextInputLayout ) is come between LinearLayout and EditText and i have no idea how to resolve it.
Thanks in advance
Upvotes: 0
Views: 222
Reputation: 46
TextInputLayout has a method getEditText to retrieve the EditText inside it.
You should not use getChildAt to retrieve EditText.
Instead:
if (v instanceof TextInputLayout) {
EditText editText = ((TextInputLayout) v).getEditText();
}
Upvotes: 1
Reputation: 2156
This should work:
if (v instanceof TextInputLayout) {
EditText editText = (EditText) v.getChildAt(0);
But you should probably add some more checks to be sure you don't run into exceptions.
Upvotes: 1