左边是现在的样子。右边是我想要实现的。
在 LinearLayout 中这很容易。重力=中心_垂直。如何在 ConstainLayout 中做到这一点?
原则上我可以让2个View上下空。并让他们 match_parent。但它不会看起来很漂亮。也许可以通过 ConstainLayout 以某种方式做到这一点?
我这样做了,但似乎并非如此。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_width="match_parent">
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/background_login">
<TextView
android:id="@+id/textView5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Online Video Training"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="24dp"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="8dp"/>
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="Welcome"
app:layout_constraintTop_toBottomOf="@+id/textView5"
app:layout_constraintStart_toStartOf="@+id/textView5"
android:layout_marginStart="0dp"/>
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Please Login"
app:layout_constraintTop_toBottomOf="@+id/textView7"
tools:layout_editor_absoluteX="24dp"/>
<EditText
android:id="@+id/etLogin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="0dp"
android:layout_marginTop="32dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/textView10"
app:layout_constraintTop_toBottomOf="@+id/textView10"/>
<EditText
android:id="@+id/etPass"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="0dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/etLogin"
app:layout_constraintTop_toBottomOf="@+id/etLogin"/>
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/remember_me"
app:layout_constraintTop_toBottomOf="@+id/etPass"
tools:layout_editor_absoluteX="24dp"/>
<Button
android:id="@+id/btnLogin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="64dp"
android:text="Log In"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/checkBox"
app:layout_constraintTop_toBottomOf="@+id/checkBox"
/>
</android.support.constraint.ConstraintLayout>
</LinearLayout>
狗屎一些代码结果
这只需使用
wrap_content
和app:layout_constraintBottom_toBottomOf="parent"
+即可完成app:layout_constraintTop_toTopOf="parent"
:看起来像这样:
