Я добавляю ряд пользовательских представлений к LinearLayout. Я переопределил метод onMeasure этих пользовательских представлений, чтобы вернуть размеры на основе определенных параметров. На основании ввода пользователем я хотел бы изменить эти параметры, чтобы изменить размер просмотров. Как заставить LinearLayout "перемасштабировать" его дочерние элементы, чтобы отразить новые измерения?
В Android, как переформатировать представления?
Ответ 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());
}