Пользовательский TextView не может установить гравитацию - PullRequest
0 голосов
/ 10 июня 2018

У меня есть пользовательский TextView, который просто добавляет точку слева от текста, цвет точки определяется внутренним состоянием.Однако гравитация не может быть установлена ​​(в представлении или в формате XML), и текст перекрывается точкой, как вы можете видеть ниже (я установил серый цвет фона).Размеры правильно установлены, хотя.Есть идеи о том, где может быть проблема?

enter image description here

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)
}

1 Ответ

0 голосов
/ 10 июня 2018

это, вероятно, из-за используемого макета, гравитация хорошо работает с FrameLayout.Если вы хотите добавить объявление точка в начало текста, я предлагаю вам использовать LinearLayout в качестве родителя вашего текста и добавить точку в качестве первого потомка родителя представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...