Я реализую custom TextInputEditText
, который может показывать нередактируемый суффикс в конце пользовательского ввода. Суффикс правильно отображается для схем LTR (например, на английском языке), но не отображается для RTL (отображается только пользовательский ввод). Я попытался немного им манипулировать (например, изменив Paint.Align.LEFT
на Paint.Align.RIGHT
), но это не дало эффекта.
Это обычай TextInputEditText
:
class TextInputEditTextWithSuffix : TextInputEditText {
private var textPaint = TextPaint()
private var suffix: String = ""
private var suffixPadding: Float = 0f
// constructors...
private fun getAttributes(cxt: Context, attrs: AttributeSet, defStyleAttr: Int) {
val a = cxt.obtainStyledAttributes(attrs, R.styleable.TextInputEditTextWithSuffix, defStyleAttr, 0)
if (a != null) {
suffix = a.getString(R.styleable.TextInputEditTextWithSuffix_suffix)
suffixPadding = a.getDimension(R.styleable.TextInputEditTextWithSuffix_suffixPadding, 0f)
}
a!!.recycle()
}
override fun onDraw(c: Canvas) {
super.onDraw(c)
val suffixXPosition = textPaint.measureText(text.toString()).toInt() + paddingStart + 50
c.drawText(suffix, max(suffixXPosition.toFloat(), suffixPadding), baseline.toFloat(), textPaint)
}
override fun onFinishInflate() {
super.onFinishInflate()
textPaint.color = currentTextColor
textPaint.textSize = textSize
textPaint.textAlign = Paint.Align.LEFT // I think this plays an important role
}