LinearLayout设置layout_gravity=right|end无法使ImageView右对齐
解决ImageView无法对齐LinearLayout右侧的问题
问题出在外层横向LinearLayout的布局权重设置:左边的子LinearLayout宽度为wrap_content,仅占用自身内容宽度,导致ImageView直接跟在它后方,无法自动对齐父布局右侧。
方案一:修改现有LinearLayout布局
给左侧的子LinearLayout添加android:layout_weight="1",让它占据父布局剩余空间,ImageView会被自然挤到右侧:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="70dp" android:orientation="horizontal"> <LinearLayout android:layout_width="0dp" <!-- 配合weight使用,必须设为0dp --> android:layout_height="match_parent" android:layout_weight="1" <!-- 添加权重属性 --> android:orientation="vertical"> <TextView android:id="@+id/txt_poster_item_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tame Impala" android:layout_marginLeft="16dp" android:layout_marginTop="10dp" android:textSize="18sp"/> <TextView android:id="@+id/txt_poster_location_area" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Downtown Toronto" android:layout_marginStart="16dp" android:layout_marginTop="10dp" android:textSize="18sp"/> </LinearLayout> <ImageView android:id="@+id/img_poster_item_title" android:layout_width="wrap_content" android:layout_height="match_parent" android:src="@drawable/baseline_location_on_24" /> </LinearLayout>
方案二:改用ConstraintLayout(更灵活的现代布局方式)
通过约束属性直接控制ImageView对齐父布局右侧,代码结构更简洁:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="70dp"> <TextView android:id="@+id/txt_poster_item_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tame Impala" android:layout_marginLeft="16dp" android:layout_marginTop="10dp" android:textSize="18sp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"/> <TextView android:id="@+id/txt_poster_location_area" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Downtown Toronto" android:layout_marginStart="16dp" android:textSize="18sp" app:layout_constraintTop_toBottomOf="@id/txt_poster_item_title" app:layout_constraintStart_toStartOf="parent"/> <ImageView android:id="@+id/img_poster_item_title" android:layout_width="wrap_content" android:layout_height="match_parent" android:src="@drawable/baseline_location_on_24" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout>
注意:方案一中必须将左侧LinearLayout的layout_width设为0dp,否则权重属性无法生效。
内容的提问来源于stack exchange,提问作者user1743524
相关产品推荐
相关产品推荐

