android - 约束布局不适合屏幕尺寸的问题
问题描述
我正在使用约束布局设计一个带有 android studio 的 android 应用程序,但是在我安装应用程序后,android studio ide 上的预览不匹配。我发布了两张图片来显示差异。我不知道问题出在哪里,这几天一直困扰着我。
<android.support.v7.widget.CardView 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"
style="@style/CardView.Light"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp">
<android.support.constraint.ConstraintLayout
android:layout_width="382dp"
android:layout_height="420dp">
<ImageView
android:id="@+id/media_image"
android:layout_width="278dp"
android:layout_height="140dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="16dp"
android:background="#03A9F4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/media_image" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="17dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Theme"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Lessons"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText2" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="32dp"
android:text="Add"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText3" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="32dp"
android:text="Cancel"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintTop_toBottomOf="@+id/editText3" />
</android.support.constraint.ConstraintLayout>
</android.support.v7.widget.CardView>
解决方案
您的ConstaintLayout
宽度应该是match_parent
,孩子的宽度必须是0dp
(匹配约束),必须constraints
与其父左右。
像这样的东西:
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
......
<YourView
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
当然,这个布局的容器也必须有 match_parent 宽度。
推荐阅读
- python-3.x - 如何使用多维参数解析 url 参数?
- javascript - 为什么 Javascript 中的布尔运算符不返回布尔值?
- rust - Rust 中可恢复的连续传递样式迭代器减少
- java - 在 XSD 模式中生成 @XmlElementDecl 方法需要什么?
- python - 迭代地将操作应用于列中具有相同值的行组
- google-kubernetes-engine - GKE 每个节点的最大永久性磁盘数
- java - 使用 Hibernate 和 H2 截断比预期的要慢
- python - 在文本磁贴的列之间插入逗号
- mysql - 从 MYSQL 5.6 更改为 MariaDB 10.1 后,递归查询失败
- javascript - 为什么 NodeJs 即使在异步运行也不能处理密集的 CPU 任务?