Подтвердить что ты не робот

В Android, как переформатировать представления?

Я добавляю ряд пользовательских представлений к LinearLayout. Я переопределил метод onMeasure этих пользовательских представлений, чтобы вернуть размеры на основе определенных параметров. На основании ввода пользователем я хотел бы изменить эти параметры, чтобы изменить размер просмотров. Как заставить LinearLayout "перемасштабировать" его дочерние элементы, чтобы отразить новые измерения?

4b9b3361

Ответ 1

Oh... linearLayout.requestLayout().

Ответ 2

В моем случае мне нужно немедленно передать все дети. requestLayout() не делает это немедленно.

Для тех, у кого есть такое же требование со мной:

Это приведет к немедленному отключению реляционных детей (учитывая, что вид собственной ширины и высоты не нуждается в изменении)

private void reLayoutChildren(View view) {
    view.measure(
        View.MeasureSpec.makeMeasureSpec(view.getMeasuredWidth(), View.MeasureSpec.EXACTLY),
        View.MeasureSpec.makeMeasureSpec(view.getMeasuredHeight(), View.MeasureSpec.EXACTLY));
    view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
}