我是android的新手,正在开发一个简单的应用程序。我有一个表单页面,希望用户在注册该应用程序时填写表格。 editext
和age
的{{1}}跳了起来,即使我已经限制了它。我将在下面将dollarValue
发布下来。
xml
provider_signup.xml
答案 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>