是否可以使用Cardview创建具有高程,拐角半径等的约束布局? 约束布局具有一个“ constraintlayout.helper.widget.Flow”,可以很好地打包这些窗口小部件,但不确定是否可以使其看起来类似于Cardview
答案 0 :(得分:0)
Flow类继承自View类,因此您也可以在Flow中使用高程。
没有类似于CardView的cornerRadius属性。但是您可以创建一个可绘制形状的圆角矩形,并将其设置为Flow的背景。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/light_image_background"/>
<corners android:radius="10dp"/>
</shape>
并设置它们的流动方式:
android:background="@drawable/rounded_image_background"
android:elevation="6dp"
在保持统一层次结构的同时,您将拥有一个四舍五入的背景。
其他可能的解决方案是从Flow类扩展并覆盖onDraw以在背景中绘制圆角矩形。会是这样的:
class RoundedFlow @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : Flow(context, attrs, defStyleAttr) {
private val backgroundRect : RectF = RectF(0f, 0f, 200f, 200f)
private val backgroundCornerRadius = 20f
private val backgroundPaint : Paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
color = Color.YELLOW
}
override fun onDraw(canvas: Canvas?) {
backgroundRect.set(0f, 0f, measuredWidth.toFloat(), measuredHeight.toFloat())
canvas?.drawRoundRect(backgroundRect, backgroundCornerRadius , backgroundCornerRadius, backgroundPaint)
}
}