gpt4 book ai didi

android - 禁用 ScrollView 中包含的 ListView 的滚动

转载 作者:IT老高 更新时间:2023-10-28 21:39:57 28 4
gpt4 key购买 nike

我想为我的用户显示个人资料屏幕。

它必须具有三个 View (2 个 Buttons 和一个 ImageView)和一个 ListView 以显示该用户制作的内容。

但是,我不希望 ListView 滚动。相反,我希望它尽可能大,并将我的所有 View 放在一个 ScrollView 中,这样三个第一个 View 就会随着 ListView 滚动出来。当然,这不会按预期工作。

我所有的三个项目都在 LinearLayout 内。我曾想过让它们成为 ListView 中的第一项,但这导致它们可以作为第一项被选择,并且不得不进行一些不需要的编码。

有没有一种简单的方法可以做到这一点,还是我必须坚持让布局成为我的 ListView 中的第一项?

最佳答案

我为此找到了一个非常简单的解决方案。只需获取 ListView 的适配器并在显示所有项目时计算其大小。优点是此解决方案也适用于 ScrollView。

例子:

public static void justifyListViewHeightBasedOnChildren (ListView listView) {

ListAdapter adapter = listView.getAdapter();

if (adapter == null) {
return;
}
ViewGroup vg = listView;
int totalHeight = 0;
for (int i = 0; i < adapter.getCount(); i++) {
View listItem = adapter.getView(i, null, vg);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}

ViewGroup.LayoutParams par = listView.getLayoutParams();
par.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
listView.setLayoutParams(par);
listView.requestLayout();
}

通过您的 ListView 对象调用此函数:

justifyListViewHeightBasedOnChildren(myListview);

上面显示的功能是对帖子的修改: Disable scrolling in listview

请注意在将适配器设置为 ListView 后调用此函数。如果适配器中条目的大小发生了变化,您也需要调用该函数。

关于android - 禁用 ScrollView 中包含的 ListView 的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12212890/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com