使用Kotlin进行Android开发,其中一个layout文件如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="60dp">
<TextView
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="18sp"
android:text="Account:" />
<EditText
android:id="@+id/accountEdit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="60dp">
<TextView
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="18sp"
android:text="Password:" />
<EditText
android:id="@+id/passwordEdit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:inputType="textPassword" />
</LinearLayout>
<Button
android:id="@+id/login"
android:layout_width="200dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:text="Login" />
</LinearLayout>
请将上述layout文件改写成基于ConstraintLayout的layout文件,界面效果需相同。
将上述 LinearLayout
布局文件改写为基于 ConstraintLayout
的布局文件,可以通过使用约束来实现相同的界面效果。以下是改写后的 XML 布局文件:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/accountLabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="Account:"
app:layout_constraintEnd_toStartOf="@+id/accountEdit"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.1"
android:layout_marginEnd="8dp"
android:layout_marginTop="16dp"/>
<EditText
android:id="@+id/accountEdit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/accountLabel"
app:layout_constraintTop_toTopOf="@+id/accountLabel"
app:layout_constraintHorizontal_bias="0"
android:layout_marginStart="8dp"/>
<TextView
android:id="@+id/passwordLabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="Password:"
app:layout_constraintEnd_toStartOf="@+id/passwordEdit"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/accountEdit"
app:layout_constraintVertical_bias="0.1"
android:layout_marginEnd="8dp"
android:layout_marginTop="16dp"/>
<EditText
android:id="@+id/passwordEdit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:inputType="textPassword"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/passwordLabel"
app:layout_constraintTop_toTopOf="@+id/passwordLabel"
app:layout_constraintHorizontal_bias="0"
android:layout_marginStart="8dp"/>
<Button
android:id="@+id/login"
android:layout_width="200dp"
android:layout_height="60dp"
android:text="Login"
app:layout_constraintTop_toBottomOf="@+id/passwordEdit"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintVertical_bias="0.1"
android:layout_marginTop="24dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
ConstraintLayout
作为根布局,以便更灵活地控制子视图的位置。app:layout_constraint
属性与其他视图或父视图建立约束关系。layout_margin
属性来设置视图之间的间距,以保持与原始布局相同的视觉效果。app:layout_constraintVertical_bias
来调整视图的垂直位置,使其在父布局中看起来更居中。这样,您就可以在 ConstraintLayout
中实现与原始 LinearLayout
相同的界面效果。