作为Constraint Layout

时间:2016-06-25 08:34:57

标签: android android-layout android-studio

我在设计支持库的帮助下创建了一个文本输入,但它在我放入的约束布局中表现得很奇怪。下面的代码是我希望窗口小部件显示的方式,它最初在两者中都能正确显示设计构建器和设备。但是,如果我选择TextInputLayout(在设计或蓝图布局中),EditTextlayout_widthmatch_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>

The state of the layout after the EditText have changed

3 个答案:

答案 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中包括这些行。