- 原因:
这是因为ScrollView在内部有一个叫做FrameLayout的子视图,你需要间接地修改这个子视图的高度,而不是直接修改ScrollView的高度。ScrollView的高度是根据子视图高度决定的。
- 解决:
假设ScrollView的子视图是textView,那么可以动态设置textView的高度,然后再调用requestLayout()方法,强制布局重新计算。
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) textView.getLayoutParams();
params.height = Utils.dp2px(context, 300);
textView.requestLayout();
注意,如果要限制最大高度,而使用以下方法,会发现永远不生效,因为params.height在requestLayout之前的高度为负值,代表自适应内容高度。
params.height = Math.min(params.height, Utils.dp2px(context, 300));