Проверьте, является ли текстовое представление эллиптическим без ViewTreeObserver

Мне нужно реализовать RelativeLayout с TextView что по умолчанию имеет два якоря layout_alignParentLeft а также layout_alignParentRight (поэтому он растягивается через контейнер). Мне нужно, чтобы макет определял, является ли textView эллиптическим, а если нет, удаляет layout_alignParentLeft, так что вид будет выровнен по правой стороне контейнера.

Я нашел решение, которое использует ViewTreeObserver и это вроде работает, но проблема в том, что textView отрисовывается до того, как я могу удалить якорь и правильно перерисовать его, поэтому пользователи сначала видят растянутую версию, а затем она перерисовывается рядом с правой стороной родителя.

Мой код выглядит так:

onGlobalLayoutListener = ViewTreeObserver.OnGlobalLayoutListener {
        if (recalculateFiltersWidth) {
            val layout = mSelectedFilters.layout
            val lines = layout.lineCount
            if (lines > 0 && layout.getEllipsisCount(lines - 1) == 0) {
                //Change the anchor
            }
            recalculateFiltersWidth = false
            viewTreeObserver.removeOnGlobalLayoutListener(onGlobalLayoutListener)
        }
    }

Я хочу избежать рисования до того, как я смогу удалить якорь (если мне нужно это сделать). Как я могу это сделать?

0 ответов

Другие вопросы по тегам