0

我是 Android 新手,我正在使用滚动视图中的列表视图开发应用程序。根据我的要求,我需要显示一些带有垂直滚动的视图,并在其下方显示一个列表视图。我想垂直滚动整个视图和列表视图,因为列表视图必须独立滚动。我已经搜索了解决方案,但发现我们不应该在滚动视图中使用 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;
    }
});

请帮帮我,提前谢谢

4

3 回答 3

2

ListViews 不打算在滚动视图中使用。

对于您的参考:看到这个

于 2012-04-18T12:06:33.763 回答
0

不要在 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-18T12:12:55.203 回答
0

正如你从别人那里知道的..

ScrollView 中的 ListView 不起作用。

对于解决方案的摇动,

您可以将其他布局部分...添加views到一个 xml 和listview另一个

然后使用listView.setHeaderView(view);将您的视图布局添加为标题。

示例代码:

LinearLayout ll = (LinearLayout) findViewById(R.id.headerlayout); ListView lv = (ListView)findViewById(R.id.listview); lv.addHeaderView(ll);

看到这个或者你也可以在互联网上搜索带有标题的 Listview 示例

于 2012-04-18T12:30:14.520 回答