我想告诉我的用户配置文件屏幕。
它必须有三个视图(2个Buttons
和一个ImageView
)和一个ListView
来显示由该用户所进行的内容。
不过,我不希望ListView
滚动。 相反,我想需要它是一样大,并把我的一个内部的所有意见ScrollView
的,所以三个第一的观点与滚动出来ListView
。 这当然并不像预期的那样。
我所有的三个项目是一个内部LinearLayout
。 我认为让他们在第一项的ListView
,但是这会导致他们被选择作为第一个项目,不得不做一些不必要的编码。
有没有办法做到这一点最简单的方式,否则我将不得不坚持使布局在我的ListView中的第一项?
将它们添加到ListView的第一个项目似乎是一个非常好的解决方案。
为了使视图不可选择刚刚得到的观点和.setClickable(false)
。
我发现这是一个非常简单的解决方案。 刚刚获得列表视图的适配器和计算时显示所有项目的大小。 其优点是,这种解决方案也适用滚动型内。
例:
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: 在列表视图禁用滚动
请注意,您所设定的适配器列表视图后调用这个函数。 如果在适配器条目的大小发生了变化,就需要调用这个函数为好。
你可以这样做
listView.setScrollContainer(false);
更多请查看
如何获得非滚动的ListView?
我想补充一个View
与顶无形背景ListView
。 设置一个View.OnTouchListener()
它。 并通过返回消耗事件true
在onTouch()
的方法View.OnTouchListener()
当你想要的名单再次回滚动,消除对透明触摸监听器设置View
如果你要在列表中显示视图中的项目数量有限,想从滚动,那么你必须保持高度的ListView大于项目总高度阻止列表视图。
比如你想要显示3项。 (行的高度为30)。 然后物品总高度变3×30DP = 90dp,
所以现在你必须设置列表视图高度大于90。如:100dp。 所以现在你的列表视图不会在任何情况下滚动。
我认为最好的办法是把2个按钮,并在LinearLayout中(或适合您需要的任何布局)图像视图并添加此布局,使用addHeaderView方法列表标题:
http://developer.android.com/reference/android/widget/ListView.html#addHeaderView(android.view.View )
下面的指令:
name_lista.getLayoutParams (). height = new_size
new_size是,你将根据你的列表的元素,例如数量计算的变量:
new_size = 100 * list_size;