ImageView已存在但不可见,需覆盖两个RelativeLayout交叉区域问题
解决ImageView跨RelativeLayout交叉区域不显示的问题
我一眼就看出你遇到的核心问题是视图层级覆盖,再加上约束定位的小偏差,咱们一步步来搞定:
问题根源
你在XML里把@+id/spinner这个ImageView放在了LinearLayout的前面,但Android布局的规则是:XML里后声明的视图层级更高,会显示在前面。所以你的LinearLayout(包含两个RelativeLayout)直接把ImageView给挡住了——这就是为啥你能看到边框但看不到图像的原因。
另外,你给ImageView设置的约束是绑定到LinearLayout的四边,这会让它填满整个LinearLayout,完全不符合你要覆盖两个RelativeLayout交叉区域的需求。
解决方案步骤
- 调整视图顺序:把
spinner的ImageView移到LinearLayout的后面,让它的层级更高,不会被下方的布局遮挡。 - 修正约束定位:把ImageView的约束绑定到两个RelativeLayout的交叉区域(也就是中间的
myRectangleView附近),精准定位到你想要的位置。 - 确认资源有效性:确保
@drawable/spinner确实存在于你的res/drawable目录中;如果是矢量图,记得在app模块的build.gradle里开启矢量支持:android { defaultConfig { vectorDrawables.useSupportLibrary = true } } - 优化布局稳定性:把两个RelativeLayout的
layout_height从100dp改成0dp,配合layout_weight=1让它们平分LinearLayout的高度,交叉区域的位置会更稳定。
修改后的完整布局代码
<android.support.constraint.ConstraintLayout 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/activity_main_inference" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/linearLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:baselineAligned="false" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="@color/colorCoral"> <View android:id="@+id/p1circle1" android:layout_width="20dp" android:layout_height="20dp" android:layout_alignStart="@+id/p1Tracker" android:layout_alignLeft="@+id/p1Tracker" android:layout_alignTop="@+id/p1Tracker" android:layout_alignBottom="@+id/p1Tracker" android:layout_marginStart="9dp" android:layout_marginLeft="9dp" android:layout_marginTop="4dp" android:layout_marginBottom="4dp" android:background="@drawable/circle" /> <View android:id="@+id/p1circle2" android:layout_width="20dp" android:layout_height="20dp" android:layout_alignTop="@+id/p1Tracker" android:layout_alignEnd="@+id/p1Tracker" android:layout_alignRight="@+id/p1Tracker" android:layout_alignBottom="@+id/p1Tracker" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_marginStart="199dp" android:layout_marginLeft="199dp" android:layout_marginTop="4dp" android:layout_marginEnd="11dp" android:layout_marginRight="11dp" android:layout_marginBottom="4dp" android:background="@drawable/circle" /> <View android:id="@+id/p1Tracker" android:layout_width="wrap_content" android:layout_height="28dp" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginStart="154dp" android:layout_marginLeft="154dp" android:layout_marginTop="137dp" android:layout_marginEnd="154dp" android:layout_marginRight="154dp" android:background="@drawable/trackbox" /> <ImageView android:id="@+id/imageView4" android:layout_width="wrap_content" android:layout_height="108dp" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:layout_marginStart="139dp" android:layout_marginLeft="139dp" android:layout_marginTop="30dp" android:layout_marginEnd="137dp" android:layout_marginRight="137dp" android:layout_marginBottom="144dp" tools:srcCompat="@tools:sample/avatars" /> <TextView android:id="@+id/usernamep1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginStart="156dp" android:layout_marginLeft="156dp" android:layout_marginTop="6dp" android:layout_marginEnd="156dp" android:layout_marginRight="156dp" android:fontFamily="sans-serif-condensed" android:text="Username" android:textColor="@color/White" android:textSize="18sp" /> </RelativeLayout> <View android:id="@+id/myRectangleView" android:layout_width="match_parent" android:layout_height="3dp" android:background="@drawable/rectangle" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="@color/colorBackground2"> <TextView android:id="@+id/usernamep2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginStart="156dp" android:layout_marginLeft="156dp" android:layout_marginTop="253dp" android:layout_marginEnd="156dp" android:layout_marginRight="156dp" android:fontFamily="sans-serif-condensed" android:text="Username" android:textColor="@color/White" android:textSize="18sp" /> <View android:id="@+id/p1circle4" android:layout_width="20dp" android:layout_height="20dp" android:layout_alignTop="@+id/p1circle3" android:layout_alignEnd="@+id/p1Tracker2" android:layout_alignRight="@+id/p1Tracker2" android:layout_marginTop="0dp" android:layout_marginEnd="10dp" android:layout_marginRight="10dp" android:background="@drawable/circle" /> <View android:id="@+id/p1circle3" android:layout_width="20dp" android:layout_height="20dp" android:layout_alignStart="@+id/p1Tracker2" android:layout_alignLeft="@+id/p1Tracker2" android:layout_alignTop="@+id/p1Tracker2" android:layout_alignBottom="@+id/p1Tracker2" android:layout_marginStart="10dp" android:layout_marginLeft="10dp" android:layout_marginTop="4dp" android:layout_marginBottom="4dp" android:background="@drawable/circle" /> <View android:id="@+id/p1Tracker2" android:layout_width="wrap_content" android:layout_height="28dp" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginStart="154dp" android:layout_marginLeft="154dp" android:layout_marginTop="110dp" android:layout_marginEnd="154dp" android:layout_marginRight="154dp" android:background="@drawable/trackbox" /> <ImageView android:id="@+id/imageView6" android:layout_width="wrap_content" android:layout_height="108dp" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:layout_marginStart="138dp" android:layout_marginLeft="138dp" android:layout_marginTop="144dp" android:layout_marginEnd="138dp" android:layout_marginRight="138dp" android:layout_marginBottom="30dp" tools:srcCompat="@tools:sample/avatars" /> </RelativeLayout> </LinearLayout> <!-- 移到LinearLayout后面,调整约束定位到交叉区域 --> <ImageView android:id="@+id/spinner" android:layout_width="351dp" android:layout_height="62dp" app:layout_constraintBottom_toTopOf="@+id/myRectangleView" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/linearLayout" app:srcCompat="@drawable/spinner" /> </android.support.constraint.ConstraintLayout>
内容的提问来源于stack exchange,提问作者brent_mb
相关产品推荐
相关产品推荐

