本文主要是介绍通过LayoutParams动态修改ScrollView高度无效的原因及解决方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 原因:
这是因为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));
这篇关于通过LayoutParams动态修改ScrollView高度无效的原因及解决方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!