自定义TextView无法设置重力

时间:2018-06-09 22:21:53

标签: android kotlin textview android-custom-view

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

enter image description here

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)
}

1 个答案:

答案 0 :(得分:0)

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