我是Android新手,我在滚动视图中使用listview开发应用程序。根据我的要求,我需要用垂直滚动显示一些视图,然后在列表视图下方显示。我想垂直滚动整个视图和列表视图,其中listview必须独立滚动。我已经google搜索解决方案,但发现我们不应该在滚动视图中使用Listview。
我尝试过使用动态线性阵列替换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;
}
});
请提前帮助我,
答案 0 :(得分:2)
ListViews不应在scrollview中使用。
您的参考:see this
答案 1 :(得分:0)
如果你必须这样做,请尝试下面的代码,它也来自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);
}
}
答案 2 :(得分:0)
正如你从别人那里了解的那样......
ScrollView中的ListView无效。
为了解决问题,
您可以将其他布局部分... views
添加到一个xml中,将listview
添加到另一个xml中
然后使用listView.setHeaderView(view);
将您的视图布局添加为标题。
示例代码:
LinearLayout ll =(LinearLayout)findViewById(R.id.headerlayout); ListView lv =(ListView)findViewById(R.id.listview); lv.addHeaderView(LL);
see this 或者您也可以在互联网上搜索带有标题的Listview示例