如何将ListView放入滚动视图而不使其崩溃?

如何将ListView放入滚动视图而不使其崩溃?

我四处寻找解决这个问题的方法,而我唯一能找到的答案似乎是“不要将ListView放入滚动视图“.我还没有看到任何真正的解释为什么尽管如此。我能找到的唯一原因似乎是谷歌认为你不应该这么做。我知道所以我就这么做了。

因此,问题是,如何才能将ListView放置到ScrollView中,而不将其折叠到其最小高度?


有只小跳蛙
浏览 530回答 4
4回答

Qyouu

我四处寻找解决这个问题的方法,而我唯一能找到的答案似乎是“不要将ListView放入滚动视图“.我还没有看到任何真正的解释为什么尽管如此。我能找到的唯一原因似乎是谷歌认为你不应该这么做。我知道所以我就这么做了。因此,问题是,如何才能将ListView放置到ScrollView中,而不将其折叠到其最小高度?

德玛西亚99

这是我的解决办法。我对Android平台相当陌生,我确信这有点麻烦,特别是在直接调用.size和设置LayoutParams.height属性,但它可以工作。你要做的就是打电话Utility.setListViewHeightBasedOnChildren(yourListView)它将被调整大小,以准确地容纳其项目的高度。public&nbsp;class&nbsp;Utility&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;setListViewHeightBasedOnChildren(ListView&nbsp;listView)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ListAdapter&nbsp;listAdapter&nbsp;=&nbsp;listView.getAdapter(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(listAdapter&nbsp;==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;pre-condition &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;totalHeight&nbsp;=&nbsp;listView.getPaddingTop()&nbsp;+&nbsp;listView.getPaddingBottom(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;listAdapter.getCount();&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;View&nbsp;listItem&nbsp;=&nbsp;listAdapter.getView(i,&nbsp;null,&nbsp;listView); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(listItem&nbsp;instanceof&nbsp;ViewGroup)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listItem.setLayoutParams(new&nbsp;LayoutParams(LayoutParams.WRAP_CONTENT,&nbsp;LayoutParams.WRAP_CONTENT)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listItem.measure(0,&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalHeight&nbsp;+=&nbsp;listItem.getMeasuredHeight(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewGroup.LayoutParams&nbsp;params&nbsp;=&nbsp;listView.getLayoutParams(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params.height&nbsp;=&nbsp;totalHeight&nbsp;+&nbsp;(listView.getDividerHeight()&nbsp;*&nbsp;(listAdapter.getCount()&nbsp;-&nbsp;1)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listView.setLayoutParams(params); &nbsp;&nbsp;&nbsp;&nbsp;}}

偶然的你

放进ListView在一个ScrollView,我们可以用ListView作为ScrollView。必须存在的东西ListView可以放在ListView。的顶部和底部的其他布局ListView的页眉和页脚添加布局。ListView。所以整个ListView会给你一个滚动的体验。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java