我在设计支持库的帮助下创建了一个文本输入,但它在我放入的约束布局中表现得很奇怪。下面的代码是我希望窗口小部件显示的方式,它最初在两者中都能正确显示设计构建器和设备。但是,如果我选择TextInputLayout
(在设计或蓝图布局中),EditText
将layout_width
从match_parent
修改为0dp
,导致其消失。
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_height="wrap_content"
android:layout_width="0dp"
app:layout_constraintLeft_toLeftOf="@+id/activity_login"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
app:layout_constraintTop_toTopOf="@+id/activity_login"
android:layout_marginTop="16dp"
app:layout_constraintRight_toRightOf="@+id/activity_login"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toBottomOf="@+id/activity_login"
android:layout_marginBottom="16dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:ems="10"
android:id="@+id/email"
android:layout_weight="1"
android:hint="@string/email"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="11dp"/>
</android.support.design.widget.TextInputLayout>
答案 0 :(得分:3)
我想我会回来提供解决方案,因为这仍然是开放的。
我看到EditText视图在TextInputLayout中表现异常的原因是因为它们不应该首先出现在那里。 TextInputLayout是设计支持库的一部分,它为开发人员提供了一种以与Material Design规范一致的方式为文本字段构建动态标签和错误消息的简便方法。但是,它们将TextInputEditText作为子项,而不是EditText。
<android.support.design.widget.TextInputLayout
android:id="@+id/emailLayout"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:labelFor="@+id/email"
app:layout_constraintLeft_toLeftOf="@+id/activity_login"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
app:layout_constraintTop_toTopOf="@+id/activity_login"
android:layout_marginTop="16dp"
app:layout_constraintRight_toRightOf="@+id/activity_login"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toBottomOf="@+id/activity_login"
android:layout_marginBottom="16dp">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/email"
android:inputType="textEmailAddress"
android:hint="@string/email"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="11dp"
/>
</android.support.design.widget.TextInputLayout>
答案 1 :(得分:0)
就我而言,我将下面的行很好用
android:inputType="textEmailAddress"
android:imeOption="yourAction"
答案 2 :(得分:-2)
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp"
在textInputLayout
中包括这些行。