Android 自定义文本视图可以';t设置重力

Android 自定义文本视图可以';t设置重力,android,kotlin,textview,android-custom-view,Android,Kotlin,Textview,Android Custom View,我有一个自定义的TextView,它只在文本左侧添加一个点,点的颜色由内部状态决定。但是,无法设置重力(无论是在视图中还是在xml中),并且文本与点重叠,如下面所示(我将背景颜色设置为灰色)。但尺寸设置正确。你知道问题出在哪里吗 这可能是由于您使用的布局,重力与FrameLayout配合得很好。 如果您想将广告点添加到文本的边框中,我建议您使用LinearLayout作为文本的父级,并将广告点作为视图父级的第一个子级。我没有使用任何布局,这只是TextView private var radi

我有一个自定义的
TextView
,它只在文本左侧添加一个点,点的颜色由内部状态决定。但是,无法设置重力(无论是在视图中还是在xml中),并且文本与点重叠,如下面所示(我将背景颜色设置为灰色)。但尺寸设置正确。你知道问题出在哪里吗


这可能是由于您使用的布局,重力与FrameLayout配合得很好。
如果您想将广告点添加到文本的边框中,我建议您使用LinearLayout作为文本的父级,并将广告点作为视图父级的第一个子级。

我没有使用任何布局,这只是
TextView
private var radius = 10.0f
private var newHeight = 0

override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
        val radiusInPixel = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, radius, resources.displayMetrics))
        val diameter = 2 * radiusInPixel
        newHeight = Math.max(measuredHeight, diameter)
        setMeasuredDimension(measuredWidth + diameter + 30, newHeight)
    }

override fun onDraw(canvas: Canvas) {
    super.onDraw(canvas)

    paint.color = when (status) {
        Status.ACTIVE -> Color.GREEN
        else -> Color.TRANSPARENT
    }

    canvas.drawCircle(radius, newHeight / 2f + 3, radius, paint)
}