为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

4 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

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

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


查看完整回答
反对 回复 2019-05-30
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

这是我的解决办法。我对Android平台相当陌生,我确信这有点麻烦,特别是在直接调用.size和设置LayoutParams.height属性,但它可以工作。

你要做的就是打电话Utility.setListViewHeightBasedOnChildren(yourListView)它将被调整大小,以准确地容纳其项目的高度。

public class Utility {
    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            // pre-condition
            return;
        }

        int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom();

        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            if (listItem instanceof ViewGroup) {
                listItem.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
             }

             listItem.measure(0, 0);
             totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }}


查看完整回答
反对 回复 2019-05-30
?
偶然的你

TA贡献1841条经验 获得超3个赞

放进ListView在一个ScrollView,我们可以用ListView作为ScrollView。必须存在的东西ListView可以放在ListView。的顶部和底部的其他布局ListView的页眉和页脚添加布局。ListView。所以整个ListView会给你一个滚动的体验。


查看完整回答
反对 回复 2019-05-30
  • 4 回答
  • 0 关注
  • 529 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信