TextInputEditText не показывает суффикс в макете RTL - PullRequest
0 голосов
/ 22 мая 2019

Я реализую 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
    }
...