Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带有高程和角半径的流的Android约束布局_Android_Android Layout_Android Constraintlayout_Android Cardview_Android Elevation - Fatal编程技术网

使用带有高程和角半径的流的Android约束布局

使用带有高程和角半径的流的Android约束布局,android,android-layout,android-constraintlayout,android-cardview,android-elevation,Android,Android Layout,Android Constraintlayout,Android Cardview,Android Elevation,是否可以在不使用Cardview的情况下创建具有标高、拐角半径等的约束布局? Constraint layout有一个“constraintlayout.helper.widget.Flow”,它很好地打包了小部件,但不确定是否可以使其看起来类似于Cardview,Flow类继承自View类,因此您也可以在Flow中使用提升 没有类似于CardView的cornerRadius属性。但您可以创建一个圆形矩形作为可绘制的形状,并将其设置为流的背景 <shape xmlns:android=&

是否可以在不使用Cardview的情况下创建具有标高、拐角半径等的约束布局?
Constraint layout有一个“constraintlayout.helper.widget.Flow”,它很好地打包了小部件,但不确定是否可以使其看起来类似于Cardview,Flow类继承自View类,因此您也可以在Flow中使用提升

没有类似于CardView的cornerRadius属性。但您可以创建一个圆形矩形作为可绘制的形状,并将其设置为流的背景

<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>
您将有一个圆形的背景,同时保持平面层次结构

另一种可能的解决方案是从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)
    }
}

为什么不在CardView中使用ConstraintLayout呢?是的,我可以这样做,但是“ConstraintLayout.helper.widget.Flow”更像是一个线性布局。我发现使用4个流元素管理xml比使用4个CardView更容易,每个CardView都有一个约束布局。
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)
    }
}