некорректные данные.
Есть TextView которое инфлейтится через viewBinding, стили и отступы уже проставлены в xml. Measure выдает 1080 (лимит по ширине экрана), а после рендера ширина становится ~800, потому что на самом деле вью не во весь экран, а в две линии текста
`with(popupContentBinding.root) {
text = "QWERJOQWR 123IPQIAPQOW OOWQO» " +
"QWERJOQWR 123IPQIAPQOW OOWQO"
measure(
/* width = */ MeasureSpec.makeMeasureSpec(
context.resources.displayMetrics.widthPixels,
MeasureSpec.AT_MOST
),
/* height = */ MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
)
}`
Попробуйте doOnLayout
тот кусок кода (в тч measure) если что находится в by lazy блоке, который вызывается при клике на кнопку, а не при инициализации. Попробую добавить doOnLayout
А зачем вообще измерять text view?
нужно для расчета позиции на экране перед отрисовкой
Позиции чего в чём, что значит по углам, чем штатные средства не устраивают?
это PopupWindow, который должен быть отрисован по углу родительного вью (1)
Есть вариант узнать ширину текста через Paint, но че то такое, костыль, мурыжу measure. Вообще не понятно почему какие то сложности возникли с ним, почему ширина другая
layout_width какая?
У биндинга текствьюшки? wrap_content
Вангую, что вы хотите что-то странное. Потому что в норме все размеры посчитаны к тому времени, когда юзер может куда-то кликнуть.
подожди, а ты дёргаешь measure() и после этого проверяешь getWidth()? 😅
нет конечно, measuredWidth
PopupWindow отрисовывается по методу (по клику в моем случае)
а если поставить background или включить layout bounds, вьюшка на всю ширину?
Он показывается там, где ему скажут. Когда юзер может куда-то кликать, все размеры уже должны быть правильные и окончательные.
Обсуждают сегодня