android - l 不同设备内有RelativeLayout问题
问题描述
以下是我的 recyclerView 单元格 xml 布局和屏幕截图,显示它如何在某些设备上显示对齐,但在其他设备上显示未对齐,并且 list_consultation_section_two 未显示和 list_consultation_section_three 无故居中任何想法为什么会发生这种情况?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/list_certificate_item_parent"
android:layout_width="match_parent"
android:layout_height="@dimen/dimen_150dp"
android:layout_marginBottom="@dimen/dimen_4dp"
android:background="@drawable/layout_bg">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/list_consultation_section_one"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_margin="@dimen/dimen_8dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/consultation_image_view"
android:layout_width="@dimen/dimen_80dp"
android:layout_height="@dimen/dimen_80dp"
android:src="@drawable/ic_user_default_image_icon"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/consultation_over_image_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dimen_16dp"
android:src="@drawable/ic_consultation_over_ar"
app:layout_constraintBottom_toBottomOf="@+id/consultation_image_view"
app:layout_constraintEnd_toEndOf="@+id/consultation_image_view"
app:layout_constraintStart_toStartOf="@+id/consultation_image_view"
app:layout_constraintTop_toTopOf="parent" />
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/consultation_status_online_image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:src="@drawable/ic_consultation_online"
app:layout_constraintBottom_toBottomOf="@+id/consultation_image_view"
app:layout_constraintStart_toStartOf="@+id/consultation_image_view" />
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/consultation_status_offline_image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:src="@drawable/ic_consultation_offline"
app:layout_constraintBottom_toBottomOf="@+id/consultation_image_view"
app:layout_constraintStart_toStartOf="@+id/consultation_image_view" />
</androidx.constraintlayout.widget.ConstraintLayout>
<RelativeLayout
android:id="@+id/list_consultation_section_two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/list_consultation_section_three"
android:layout_toEndOf="@+id/list_consultation_section_one">
<TextView
android:id="@+id/my_consultation_doctor_name_text_view"
style="@style/subtitle1Style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dimen_8dp"
android:layout_marginTop="@dimen/dimen_8dp"
android:layout_marginEnd="@dimen/dimen_8dp"
android:text="@string/dr"
android:textColor="@color/blue_174c6c" />
<TextView
android:id="@+id/my_consultation_doctor_specialty_text_view"
style="@style/Body2Style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/my_consultation_doctor_name_text_view"
android:layout_marginStart="@dimen/dimen_8dp"
android:layout_marginEnd="@dimen/dimen_8dp"
android:text="استشارى اطفال"
android:textColor="@color/gray_aaacad" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/list_consultation_section_three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true">
<TextView
android:id="@+id/my_consultation_date"
style="@style/Body2Style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dimen_4dp"
android:layout_marginEnd="@dimen/dimen_12dp"
android:text="2/11/2019"
android:layout_centerHorizontal="true"
android:textColor="@color/gray_aeb1b1" />
<TextView
android:id="@+id/my_consultation_messages_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/my_consultation_date"
android:layout_marginStart="@dimen/dimen_4dp"
android:layout_marginTop="@dimen/dimen_4dp"
android:layout_marginEnd="@dimen/dimen_12dp"
android:background="@drawable/my_consultation_messages_number_bg"
android:padding="@dimen/dimen_12dp"
android:textColor="@color/white"
android:layout_centerHorizontal="true"
tools:text="0" />
</RelativeLayout>
</RelativeLayout>
它适用于小米红米 Note 8 (API 28)、OPPO A3fW (API 22)(完全不同的 API 版本),不适用于联想 tab-7504x (API 24)
如果我为 list_consultation_section_three 设置固定大小,我知道它在所有设备上都可以正常工作的解决方案,但我只是想了解为什么? ]
解决方案
尝试制作 list_certificate_item_parent LinearLayout 而不是 RelativeLayout 并赋予它权重,试试下面的代码
<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/list_certificate_item_parent"
android:layout_width="match_parent"
android:orientation="horizontal"
android:weightSum="5"
android:layout_height="@dimen/dimen_150dp"
android:layout_marginBottom="@dimen/dimen_4dp"
android:background="@drawable/layout_bg">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/list_consultation_section_one"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:layout_margin="@dimen/dimen_8dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/consultation_image_view"
android:layout_width="@dimen/dimen_80dp"
android:layout_height="@dimen/dimen_80dp"
android:src="@drawable/ic_user_default_image_icon"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/consultation_over_image_view"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:layout_marginBottom="@dimen/dimen_16dp"
android:src="@drawable/ic_consultation_over_ar"
app:layout_constraintBottom_toBottomOf="@+id/consultation_image_view"
app:layout_constraintEnd_toEndOf="@+id/consultation_image_view"
app:layout_constraintStart_toStartOf="@+id/consultation_image_view"
app:layout_constraintTop_toTopOf="parent" />
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/consultation_status_online_image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:src="@drawable/ic_consultation_online"
app:layout_constraintBottom_toBottomOf="@+id/consultation_image_view"
app:layout_constraintStart_toStartOf="@+id/consultation_image_view" />
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/consultation_status_offline_image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:src="@drawable/ic_consultation_offline"
app:layout_constraintBottom_toBottomOf="@+id/consultation_image_view"
app:layout_constraintStart_toStartOf="@+id/consultation_image_view" />
</androidx.constraintlayout.widget.ConstraintLayout>
<RelativeLayout
android:id="@+id/list_consultation_section_two"
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/list_consultation_section_three"
android:layout_toEndOf="@+id/list_consultation_section_one">
<TextView
android:id="@+id/my_consultation_doctor_name_text_view"
style="@style/subtitle1Style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dimen_8dp"
android:layout_marginTop="@dimen/dimen_8dp"
android:layout_marginEnd="@dimen/dimen_8dp"
android:text="@string/dr"
android:textColor="@color/blue_174c6c" />
<TextView
android:id="@+id/my_consultation_doctor_specialty_text_view"
style="@style/Body2Style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/my_consultation_doctor_name_text_view"
android:layout_marginStart="@dimen/dimen_8dp"
android:layout_marginEnd="@dimen/dimen_8dp"
android:text="استشارى اطفال"
android:textColor="@color/gray_aaacad" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/list_consultation_section_three"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true">
<TextView
android:id="@+id/my_consultation_date"
style="@style/Body2Style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dimen_4dp"
android:layout_marginEnd="@dimen/dimen_12dp"
android:text="2/11/2019"
android:layout_centerHorizontal="true"
android:textColor="@color/gray_aeb1b1" />
<TextView
android:id="@+id/my_consultation_messages_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/my_consultation_date"
android:layout_marginStart="@dimen/dimen_4dp"
android:layout_marginTop="@dimen/dimen_4dp"
android:layout_marginEnd="@dimen/dimen_12dp"
android:background="@drawable/my_consultation_messages_number_bg"
android:padding="@dimen/dimen_12dp"
android:textColor="@color/white"
android:layout_centerHorizontal="true"
tools:text="0" />
</RelativeLayout>
推荐阅读
- excel - SSIS Excel 连接“无法加载任何表或视图”
- java - MIPS 组装调度
- javascript - 在鼠标悬停时显示/隐藏 DIV 容器
- javascript - 如何根据信息表绘制动态折线图?
- c# - 删除 EWS EmailMessage 正文中的 HTML 部分
- javascript - 替换所有以冒号开头的字符串,例如快速路由路径
- c++ - 如何在 Windows 上检查 EXE 是否具有 /GS 安全保护?
- java - 在 SonarQube 中使用枚举错误计算开关条件
- git - 设置后无法推送 git 提交
- html - 不太擅长 css 需要修复以匹配我的旧代码