Ich versuche, den Abstand zwischen dem Text und der linken Seite eines TextView zu erhalten. Es verwendet die Eigenschaft android:gravity="center"
.Platz zwischen Text und der Grenze von TextView
Ich mag den Abstand der roten Balken bekommen (diese roten Balken sind kein Teil des Layouts) die blaue Taste zum Zentrum. Was soll ich machen? Der dunkle Bereich repräsentiert die Grenzen des TextView.
Ich möchte keine CompoundDrawable verwenden, da diese Ansicht die Farbe der Schaltfläche zufällig ändern wird.
Der Code der Ansicht (in Kotlin geschrieben):
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)
}
}
Dank.
posten Sie bitte Ihren XML-Code – Pranita
Das XML macht hier keinen Unterschied. –
Überprüfen Sie die 'getLineBounds()' Methode. Das "Rect", das Sie als zweites Argument übergeben, hat nach dem Aufruf den horizontalen Einschub als "linken" Feldwert. –