【发布时间】:2016-09-10 08:08:35
【问题描述】:
我正在尝试获取文本与 TextView 左侧之间的距离。它使用属性android:gravity="center"。
我想获得红色条(这个红色条不是布局的一部分)到蓝色按钮居中的距离。我该怎么办? 深色区域代表 TextView 的边界。
我不想使用compoundDrawable,因为这个视图会随机改变按钮的颜色。
视图的代码(用 Kotlin 编写):
class BallTextView: TextView {
private lateinit var ballPaint : Paint
private var ballRadius : Float = 10f
private var ballColor : Int = Color.BLACK
constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) {
initializeAttributes(attrs)
configBall()
}
override fun onDraw(canvas: Canvas) {
canvas.drawCircle(ballRadius, height.toFloat()/2, ballRadius, ballPaint)
super.onDraw(canvas)
}
fun configBall() {
ballPaint = Paint()
ballPaint.isAntiAlias = true
ballPaint.color = ballColor
}
fun initializeAttributes(attrs: AttributeSet) {
val attributes = context.obtainStyledAttributes(attrs, R.styleable.ball_textview)
ballRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
attributes.getFloat(R.styleable.ball_textview_ball_radius, ballRadius),
context.resources.displayMetrics)
ballColor = attributes.getColor(R.styleable.ball_textview_ball_color, ballColor)
}
}
谢谢。
【问题讨论】:
-
请发布您的 xml 代码
-
XML 在这里没有区别。
-
查看
getLineBounds()方法。作为第二个参数传递的Rect将在调用后将水平插入作为其left字段值。 -
@MikeM.你知道有什么方法可以获取 TextView 的画布吗?
-
@MikeM。你能创造出答案吗?这解决了我的问题。
标签: android android-layout android-custom-view