我是Android的新手,我正在开发一个在滚动视图中使用listview的应用程序。根据我的要求,我需要显示垂直滚动和下面的列表视图的一些视图。我想要垂直滚动整个视图和listview,而listview必须独立滚动。我在谷歌上搜索了解决方案,但发现我们不应该在滚动视图中使用Listview。
我已经尝试了一种替代方法,用动态LinearLayouts替换Listview,但也不起作用。
我试着在触摸ListItem时禁用ScrollView的焦点,反之亦然,但我没有成功。
我尝试了下面的代码来禁用滚动视图的焦点。
mScrollView.setFocusableInTouchMode(true);
mScrollView.setFocusable(true);
mScrollView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
mScrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.requestFocusFromTouch();
return false;
}
});请帮帮我,提前谢谢
发布于 2012-04-18 20:06:34
ListViews不应该在滚动视图中使用。
参考:see this
发布于 2012-04-18 20:12:55
不要在ScrollView中嵌套ListView
如果你必须这样做,试试下面的代码,它也来自StackOverflow,由一个人回答。
public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() – 1));
listView.setLayoutParams(params);
}
}发布于 2012-04-18 20:30:15
正如你从其他人那里了解到的..
ScrollView中的ListView将不起作用。
对于解决方案的摇动,
您可以将另一个布局part...your views添加到一个xml中,将listview添加到另一个xml中
然后使用listView.setHeaderView(view);添加您的视图布局作为其标题。
示例代码:
LinearLayout ll = (LinearLayout) findViewById(R.id.headerlayout);ListView lv = (ListView)findViewById(R.id.listview);lv.addHeaderView(ll);
,或者你也可以在互联网上搜索,例如搜索带有标题的列表视图
https://stackoverflow.com/questions/10208912
复制相似问题