Замер View-элементов

162
01 октября 2017, 23:43

Пишу класс, который будет заполнять View-контейнер максимально возможным количеством указанных View-элементов. Примерно так:

public class LayoutFiller {
    private ViewGroup viewGroup;
    private View fillingView;
public LayoutFiller ( ViewGroup viewGroup, LayoutInflater layoutInflater, int viewAddress ) {
    setViewGroup(viewGroup);
    setFillingView( layoutInflater.inflate(viewAddress, null, false) );
    viewGroup.addView(fillingView);

Для того, чтобы измерить элементы до отрисовки, гугление рекомендовало задействовать либо метод measure вручную:

    viewGroup.measure( View.MeasureSpec.makeMeasureSpec(0, ViewGroup.MeasureSpec.UNSPECIFIED), 
                       View.MeasureSpec.makeMeasureSpec(0, ViewGroup.MeasureSpec.UNSPECIFIED) );
    fillingView.measure( View.MeasureSpec.makeMeasureSpec(0, ViewGroup.MeasureSpec.UNSPECIFIED), 
                         View.MeasureSpec.makeMeasureSpec(0, ViewGroup.MeasureSpec.UNSPECIFIED) );

Что возвращает 424*107 для старшего элемента(правильное значение - 720*1136), и 107*54 - для младшего(это TextView, квадратный, 35dp*35dp).

Либо задействовать ViewTreeObserver, что меня не устраивает, поскольку оный возвращает размеры неизвестно когда, после onResume, а я планирую достроить этот элемент ещё в onCreate.

Есть ли какой-то способ получить более-менее корректные размеры до отрисовки элементов?

Answer 1

Создаёте кастомную view и переопределяете в нём метод onSizeChanged(), который вызывается до отрисовки но уже при известных размерах

READ ALSO
Как высчитать разницу времени?

Как высчитать разницу времени?

Есть два времени в String, например, 10:45(ожидаемое) и 10:30(текущее)Как определить количество минут до ожидаемого значения?

167
Как приводить Observable

Как приводить Observable

Есть следующий код

142
Встроенные покупки [требует правки]

Встроенные покупки [требует правки]

Здравствуйте! Подскажите, пожалуйста, как сделать внутриигровые покупки в игре на java? Допустим почти во всех играх есть встроенные покупки...

171
Android - Свой System UI, как сделать?

Android - Свой System UI, как сделать?

Кто может посоветовать материалы и статьи по теме - как создать свой system UI?

185