包含在滚动型内一个ListView的禁用滚动(Disable scrolling of a List

2019-06-17 22:47发布

我想告诉我的用户配置文件屏幕。

它必须有三个视图(2个Buttons和一个ImageView )和一个ListView来显示由该用户所进行的内容。

不过,我不希望ListView滚动。 相反,我想需要它是一样大,并把我的一个内部的所有意见ScrollView的,所以三个第一的观点与滚动出来ListView 。 这当然并不像预期的那样。

我所有的三个项目是一个内部LinearLayout 。 我认为让他们在第一项的ListView ,但是这会导致他们被选择作为第一个项目,不得不做一些不必要的编码。

有没有办法做到这一点最简单的方式,否则我将不得不坚持使布局在我的ListView中的第一项?

Answer 1:

将它们添加到ListView的第一个项目似乎是一个非常好的解决方案。

为了使视图不可选择刚刚得到的观点和.setClickable(false)



Answer 2:

我发现这是一个非常简单的解决方案。 刚刚获得列表视图的适配器和计算时显示所有项目的大小。 其优点是,这种解决方案也适用滚动型内。

例:

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);

上面示出的功能是在后的modidication: 在列表视图禁用滚动

请注意,您所设定的适配器列表视图后调用这个函数。 如果在适配器条目的大小发生了变化,就需要调用这个函数为好。



Answer 3:

你可以这样做

listView.setScrollContainer(false);

更多请查看

如何获得非滚动的ListView?



Answer 4:

我想补充一个View与顶无形背景ListView 。 设置一个View.OnTouchListener()它。 并通过返回消耗事件trueonTouch()的方法View.OnTouchListener()

当你想要的名单再次回滚动,消除对透明触摸监听器设置View



Answer 5:

如果你要在列表中显示视图中的项目数量有限,想从滚动,那么你必须保持高度的ListView大于项目总高度阻止列表视图。

比如你想要显示3项。 (行的高度为30)。 然后物品总高度变3×30DP = 90dp,

所以现在你必须设置列表视图高度大于90。如:100dp。 所以现在你的列表视图不会在任何情况下滚动。



Answer 6:

我认为最好的办法是把2个按钮,并在LinearLayout中(或适合您需要的任何布局)图像视图并添加此布局,使用addHeaderView方法列表标题:

http://developer.android.com/reference/android/widget/ListView.html#addHeaderView(android.view.View )



Answer 7:

下面的指令:

name_lista.getLayoutParams (). height = new_size

new_size是,你将根据你的列表的元素,例如数量计算的变量:

new_size = 100 * list_size;


文章来源: Disable scrolling of a ListView contained within a ScrollView