Android实现带彩色头部的圆角布局时头部颜色不显示问题
问题原因
- 使用
backgroundTint看不到头部颜色:android:backgroundTint属性的作用是对控件已设置的background资源进行颜色染色,生效前提是控件已经配置了非空的background属性。你当前id为detail的ConstraintLayout仅设置了backgroundTint,没有指定任何background资源,因此染色逻辑未触发,控件背景默认透明,无法看到头部颜色。 - 替换为
background属性后父布局边框被遮挡:父布局的背景drawable是带8dp圆角和边框的样式,但子View直接设置纯色background时默认是直角矩形,尺寸和父布局完全匹配的情况下,直角的子背景会直接覆盖父布局的圆角和边缘边框区域,导致边框被遮挡。
解决方案
方案1(保留backgroundTint实现)
给id为detail的ConstraintLayout添加基础background,示例:
android:background="@android:color/white"
同时给根父布局missionDetail添加android:clipToOutline="true"属性,让子内容自动裁剪到父布局的圆角边界内,既可以让tint生效显示头部颜色,也不会遮挡父布局边框。
方案2(直接使用background实现)
分别给两个子控件设置对应圆角的背景drawable:
- 头部的
detail布局设置带左上、右上8dp圆角的colorMissionDetail纯色背景 - 底部的
tvInfo设置带左下、右下8dp圆角的白色背景
子背景和父布局圆角对齐后就不会遮挡边框。
内容的提问来源于stack exchange,提问作者Turvy
相关产品推荐
相关产品推荐

