【发布时间】:2019-12-26 13:43:43
【问题描述】:
我已经创建了一个 Android 应用程序。
当我在手机上运行我的应用程序时,它运行得很好,但是当我在另一部手机上运行时,应用程序的布局发生了变化,按钮被移动,文本视图被移动到不同的位置。我在 Android Studio 的“预览设备”部分中列出的每个像素设备上进行了测试。那么如何设计适合各种设备的呢?
我在约束布局中设计了所有布局,并创建了按钮、编辑文本框和每个布局项的每个约束。
Form 1Form 1两者都使用相同的屏幕尺寸和相同的分辨率也
有人可以帮帮我吗?
<TextView
android:id="@+id/leadtextview"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Lead Creation Form"
android:textColor="#000"
android:textSize="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<EditText
android:id="@+id/name"
android:paddingStart="20dp"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="20dp"
android:background="@drawable/edittext_background"
android:ems="10"
android:hint="Name"
android:inputType="textPersonName"
app:layout_constraintBottom_toTopOf="@+id/emailaddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.95" />
<EditText
android:id="@+id/emailaddress"
android:paddingStart="20dp"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="448dp"
android:background="@drawable/edittext_background"
android:ems="10"
android:hint="Email"
android:inputType="textEmailAddress"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.476" />
<EditText
android:id="@+id/company_name"
android:paddingStart="20dp"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/edittext_background"
android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="384dp"
android:ems="10"
android:hint="Comapny name"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.581" />
<EditText
android:id="@+id/mobile"
android:paddingStart="20dp"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/edittext_background"
android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="284dp"
android:ems="10"
android:hint="Mobile"
android:inputType="phone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.596" />
<EditText
android:id="@+id/address"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="144dp"
android:background="@drawable/edittext_background"
android:ems="10"
android:hint="Address"
android:inputType="textPostalAddress"
android:paddingStart="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.579" />
<Spinner
android:id="@+id/country"
android:layout_width="160dp"
android:layout_height="30dp"
android:layout_marginStart="32dp"
android:layout_marginTop="8dp"
android:background="@drawable/edittext_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.538" />
<Spinner
android:id="@+id/state"
android:layout_width="160dp"
android:layout_height="30dp"
android:layout_marginStart="36dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/edittext_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.133"
app:layout_constraintStart_toEndOf="@+id/country"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.544" />
<Spinner
android:id="@+id/city"
android:layout_width="160dp"
android:layout_height="30dp"
android:layout_marginStart="32dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/edittext_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.595" />
<Spinner
android:id="@+id/status"
android:layout_width="160dp"
android:layout_height="30dp"
android:layout_marginStart="36dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/edittext_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.13"
app:layout_constraintStart_toEndOf="@+id/city"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.595" />
<EditText
android:id="@+id/pincode"
android:paddingStart="20dp"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/edittext_background"
android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="8dp"
android:ems="10"
android:hint="Pin Code"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.68" />
<Button
android:id="@+id/registration_button"
android:layout_width="152dp"
android:layout_height="41dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="4dp"
android:background="@drawable/button_background"
android:text="Registration"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.964" />
<EditText
android:id="@+id/lead_decription"
android:layout_width="match_parent"
android:layout_height="128dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/edittext_background"
android:hint="Description"
android:paddingStart="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pincode"
app:layout_constraintVertical_bias="0.17" />
【问题讨论】:
-
你能发布你的布局代码吗?似乎约束设置不正确,否则每个设备都应该给你相同的结果
-
是的,我在发帖,但约束布局是否适合所有设备?
-
是的,约束布局是提供向后兼容性的支持库的一部分
-
问题是您将大部分视图约束到父视图,而您应该在视图本身之间添加相对约束。如果您有这样的垂直表单,并且希望 textViews 和 EditTexts 一个接一个出现,请尝试添加 app:layout_constraintBottom_toTopOf="name_of_the_viewBelow" app:layout_constraintTop_toBottomOf="name_of_the_view_above" 相应
标签: android android-studio android-layout user-interface