即使受限制,edittext也会跳起

时间:2018-11-22 20:54:46

标签: android xml android-studio

我是android的新手,正在开发一个简单的应用程序。我有一个表单页面,希望用户在注册该应用程序时填写表格。 editextage的{​​{1}}跳了起来,即使我已经限制了它。我将在下面将dollarValue发布下来。

xml

provider_signup.xml

2 个答案:

答案 0 :(得分:1)

首先,您不需要在每个视图上都约束所有4个约束。您只能以2个约束连接视图。 对于您的问题,将您的editTexts限制为应该正确的TextViews。

我将为您的@+id/ageEditText@+id/dollarEditText粘贴固定代码

<EditText
        android:id="@+id/ageEditText"
        android:layout_width="94dp"
        android:layout_height="25dp"
        android:layout_marginStart="8dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name"
        app:layout_constraintStart_toEndOf="@+id/ageTextView"
        app:layout_constraintTop_toTopOf="@+id/ageTextView" />

    <EditText
        android:id="@+id/dollarEditText"
        android:layout_width="64dp"
        android:layout_height="25dp"
        android:layout_marginStart="8dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name"
        app:layout_constraintStart_toEndOf="@+id/dollarTextView"
        app:layout_constraintTop_toTopOf="@+id/dollarTextView" />

答案 1 :(得分:1)

我将您的布局复制到android studio只是为了看看您得到了什么。之所以遇到这个问题,是因为您的视图彼此之间没有对齐,但是您尝试将它们限制为使用不同的引用,因此它们最终会独立移动。我对您的建议是将属于同一行的视图组织成自己的布局,然后约束这些布局。您将最终获得包括许多嵌入式子布局的父约束布局。

例如,在一种约束布局中添加年龄和美元价值的4个视图,如下所示:

<android.support.constraint.ConstraintLayout
        android:id="@+id/your_layout_one"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp">

        <TextView
            android:id="@+id/ageTextView"
            android:layout_width="37dp"
            android:layout_height="24dp"
            android:text="Age"
            android:textAlignment="center"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toStartOf="@id/ageEditText"
             />

        <TextView
            android:id="@+id/dollarTextView"
            android:layout_width="wrap_content"
            android:layout_height="21dp"
            android:text="Dollar Value"
            android:textAlignment="center"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@id/ageEditText"
            app:layout_constraintEnd_toStartOf="@id/dollarEditText"
             />

        <EditText
            android:id="@+id/dollarEditText"
            android:layout_width="64dp"
            android:layout_height="25dp"
            android:ems="10"
            android:inputType="textPersonName"
            android:text="Name"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@id/dollarTextView"
            app:layout_constraintEnd_toEndOf="parent"
             />

        <EditText
            android:id="@+id/ageEditText"
            android:layout_width="94dp"
            android:layout_height="25dp"
            android:ems="10"
            android:inputType="textPersonName"
            android:text="Name"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@id/ageTextView"
            app:layout_constraintEnd_toStartOf="@id/dollarTextView"
             />
    </android.support.constraint.ConstraintLayout>

您会看到如何将填充添加到父视图,而不是单个视图。由于将父级设置为围绕子级,并且将子级设置为扩展以适合父级,因此最终得到一个清晰的布局,其中4个视图水平完美对齐。现在,对包含多个视图的屏幕上的每一行都执行相同的操作,并在这些布局之间添加约束,而不是对每个视图单独进行约束。您将得到一个具有以下结构的文件:

<android.support.constraint.ConstraintLayout>
    <android.support.constraint.ConstraintLayout>
         <!--layout1 constraint start, end and top to parent-->
         <!--constraint bottom to top of layout 2 below-->
         <!--views to align horizontally-->
    </android.support.constraint.ConstraintLayout>

    <android.support.constraint.ConstraintLayout>
        <!--layout2 constraint start and end to parent-->
        <!--constraint top to bottom of layout 1 and bottom to top of layout 3 below-->
        <!--views to align horizontally-->
    </android.support.constraint.ConstraintLayout>

    <android.support.constraint.ConstraintLayout>
        <!--layout3 constraint start and end to parent-->
        <!--constraint top to bottom of layout 2 and bottom to top of layout 4 below-->
        <!--views to align horizontally-->
    </android.support.constraint.ConstraintLayout>

    <android.support.constraint.ConstraintLayout>
        <!--layout3 constraint start, end and bottom to parent-->
        <!--constraint top to bottom of layout 3 above-->
        <!--views to align horizontally-->
    </android.support.constraint.ConstraintLayout>

</android.support.constraint.ConstraintLayout>