我正在将一系列自定义视图添加到LinearLayout中。我已经重写了这些自定义视图的onMeasure方法,以根据某些参数返回尺寸。根据用户输入,我想改变这些参数,来改变视图的大小。如何强制LinearLayout“重新布局”其子项,以反映新的尺寸?
我正在将一系列自定义视图添加到LinearLayout中。我已经重写了这些自定义视图的onMeasure方法,以根据某些参数返回尺寸。根据用户输入,我想改变这些参数,来改变视图的大小。如何强制LinearLayout“重新布局”其子项,以反映新的尺寸?
哦... linearLayout.requestLayout()。
我的情况是我需要立即重新布局所有子元素。 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());
}
invalidate
和requestLayout
都无法解决,所以感谢您提供的提示! - Sean Adkinson
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
。 - Juuso Ohtonen