Android中实现视图溢出可见,解决ImageView溢出被截断问题
修复ImageView负margin溢出被截断的问题
你的问题出在ConstraintLayout默认会裁剪子View超出自身边界的内容,仅设置android:clipToPadding="false"不够——这个属性只控制是否裁剪padding区域内的子View,不影响布局边界外的溢出部分。
解决要点:
- 给外层的
ConstraintLayout添加android:clipChildren="false"属性,关闭子View的边界裁剪 - 如果这个
ConstraintLayout还有父容器,也要给父容器同样设置android:clipChildren="false",否则父容器依然会裁剪溢出内容
修改后的布局代码:
<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="0dp" android:layout_height="52dp" android:layout_marginHorizontal="20dp" android:background="@android:color/white" android:clipToPadding="false" android:clipChildren="false" <!-- 添加这行核心配置 --> app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:layout_marginTop="-12dp" android:layout_marginEnd="-12dp" android:alpha=".50" app:srcCompat="@drawable/ic_close_two" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout>
补充说明:clipChildren的作用是控制ViewGroup是否允许子View绘制到自身边界之外,默认值为true,所以会截断负margin带来的溢出内容,设置为false后就能让子View的溢出部分正常显示了。
内容的提问来源于stack exchange,提问作者Eduard Unruh
相关产品推荐
相关产品推荐

