ConstraintLayout中自定义Spinner选中项无法右对齐问题
你遇到的对齐问题根源有两个:一是Spinner设为wrap_content宽度时,内部自定义布局的weight属性无法生效,没有足够空间实现右对齐;二是ConstraintLayout中用right约束不如end约束兼容性好。
方案1:调整Spinner宽度配置(推荐)
修改activity.xml中Spinner的属性,添加最小宽度保证内部布局有足够排版空间,同时替换约束为End适配RTL布局:
<Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00000000" android:overlapAnchor="false" android:popupBackground="#00000000" android:minWidth="180dp" <!-- 可根据最长文字长度调整数值 --> app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" />
方案2:优化自定义Spinner布局
把spinner_layout.xml中的weight属性去掉,直接通过父布局对齐实现效果,避免依赖父布局宽度:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="end|center_vertical" > <TextView android:id="@+id/txt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="5dp" android:textColor="#FFF" android:textSize="20sp" android:textStyle="bold|normal" android:singleLine="true" android:layout_marginEnd="8dp" /> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:contentDescription="@null"/> </LinearLayout>
额外检查项
如果修改后下拉条目对齐异常,要确认自定义SpinnerAdapter的getDropDownView方法也使用了上述自定义布局,不要混用系统默认布局。
内容的提问来源于stack exchange,提问作者Dioptre Pic
相关产品推荐
相关产品推荐

