尝试获取 ViewGroup 的 Floating-EditText 子项
Trying Get Floating-EditText Children of a ViewGroup
我正在尝试从视图组 (LinearLayout) 获取 Floating EditText。简单 EditText 工作正常但无法使用它。
这是我的代码:
XML代码:
<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代码:
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;
}
}
这个 ( android.support.design.widget.TextInputLayout ) 介于 LinearLayout 和 EditText 之间,我不知道如何解决它。
提前致谢
这应该有效:
if (v instanceof TextInputLayout) {
EditText editText = (EditText) v.getChildAt(0);
但是您可能应该添加更多检查以确保您不会 运行 进入异常。
TextInputLayout 有一个方法 getEditText 来检索其中的 EditText。
您不应使用 getChildAt 来检索 EditText。
改为:
if (v instanceof TextInputLayout) {
EditText editText = ((TextInputLayout) v).getEditText();
}
我正在尝试从视图组 (LinearLayout) 获取 Floating EditText。简单 EditText 工作正常但无法使用它。
这是我的代码:
XML代码:
<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代码:
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;
}
}
这个 ( android.support.design.widget.TextInputLayout ) 介于 LinearLayout 和 EditText 之间,我不知道如何解决它。
提前致谢
这应该有效:
if (v instanceof TextInputLayout) {
EditText editText = (EditText) v.getChildAt(0);
但是您可能应该添加更多检查以确保您不会 运行 进入异常。
TextInputLayout 有一个方法 getEditText 来检索其中的 EditText。
您不应使用 getChildAt 来检索 EditText。
改为:
if (v instanceof TextInputLayout) {
EditText editText = ((TextInputLayout) v).getEditText();
}