滚动多个 ListViews for Android

新手上路,请多包涵

我完全被这个难住了。我有三个不同的列表需要显示在屏幕上。列表完全有可能超出屏幕的底部边缘,因此我需要滚动。

I’ve tried using a ScrollView with a LinearLayout child, and putting my ListViews in the LinearView , but all of the ListViews 用滚动条锁定到固定高度。使用其他类型的布局意味着无需滚动。

有没有人有任何建议,或者我是否需要以编程方式将列表项添加到某些布局并希望最好?

原文由 Andrew Burgess 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 311
2 个回答

我还没有这样做,但我一直在考虑,因为我可能需要这样做。我可以想到三个选项:只使用一个包含所有列表内容的列表。您可以制作一个 ListAdapter 来执行此操作并插入某种标题。这可能是非常可重用的东西。

另一个想法是制作一个列表列表。但这听起来像是自找麻烦。

原文由 pupeno 发布,翻译遵循 CC BY-SA 2.5 许可协议

将触摸事件从 touched 视图转发到其他视图。您的所有视图也将同步展开/折叠。

 OnTouchListener mOnTouch = new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        MotionEvent newEvent = MotionEvent.obtain(event);

        switch(event.getAction()) {
            case MotionEvent.ACTION_MOVE:
                if(mTouched == null) {
                    mTouched = v;
                }
                mMovingFlag = true;
                break;
            case MotionEvent.ACTION_UP:
                if(mMovingFlag==false) {
                    newEvent.setAction(MotionEvent.ACTION_CANCEL);
                }
                mMovingFlag = false;
                break;
            default:
                mMovingFlag = false;
                if(mTouched != null && mTouched.equals(v)) {
                    mTouched = null;
                }
                break;
        }

        if(mTouched == null || mTouched.equals(v)) {
            int items = mLayoutWithListViews.getChildCount();
            for(int i = 0; i < items; i++) {
                AbsListView listView = mLayoutWithListViews.getChildAt(i));
                if(listView != v) {
                    listView.onTouchEvent(newEvent);
                }
            }
        }

        return false;
    }
};

原文由 Richard 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题