我有一个自定义TextView
,只需在文本左侧添加一个点,点的颜色由内部状态决定。但是,无法设置重力(无论是在视图中还是在xml中),并且文本与点重叠,如下所示(我将背景颜色设置为灰色)。虽然尺寸设置正确。知道问题可能在哪里?
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)
}
答案 0 :(得分:0)
这可能是由于您使用的布局,重力与FrameLayout配合良好。 如果您想将广告点添加到文本的开头,我建议您使用LinearLayout作为文本的父级,并将点作为视图父级的第一个子项。