簡體   English   中英

RelativeLayout中Vertical RecyclerView上方的Horizo​​ntal RecyclerView

[英]Horizontal RecyclerView above Vertical RecyclerView in RelativeLayout

我的布局大致如下所示: 在立式RecyclerView頂部的卧式RecyclerView

整個粉紅色區域是垂直的RecyclerView 底部矩形是水平的RecyclerView 這兩個視圖都位於RelativeLayout ,其中水平RecyclerView與底部對齊。

我遇到的問題是:當水平RecyclerView沒有足夠的項目填滿屏幕寬度時,我希望能夠在其后滾動垂直RecyclerView 因此,如果您查看圖像中的綠色箭頭,我想在這種情況下滾動垂直的RecyclerView

我一直無法弄清楚如何使它工作。 我嘗試設置一個OnTouchListener ,當觸摸水平RecyclerView的項時返回false。 不過,這似乎不起作用。

我也嘗試將水平RecyclerView的寬度設置為WRAP_CONTENT但是由於某些原因, RecyclerView大小沒有調整。

無論如何,有沒有讓刷卡穿過水平的RecyclerView 水平的RecyclerView禁用了垂直滾動,因此我不認為垂直滾動甚至可以做任何事情,它只是吸收了它們。

任何意見,將不勝感激。 謝謝!

對於API <23,我測試了以下內容:

    final RecyclerView listA = (RecyclerView) findViewById(R.id.ListA);
    listA.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
    listA.setAdapter(new CustomViewAdapter(100, R.layout.list_a_item)); //first parameter is item count

    final RecyclerView listB = (RecyclerView) findViewById(R.id.ListB);
    listB.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
    listB.setAdapter(new CustomViewAdapter(4, R.layout.list_b_item)); // first parameter is item count

    listB.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Rect r = new Rect();
            //get last child view of viewgroup.
            listB.getChildAt(listB.getChildCount()-1).getGlobalVisibleRect(r);
            //do not count margins
            r.offset(-listA.getLeft(), 0);
            if (event.getX() > r.right) {
                //Pass touch event directly to backround recycle view
                listA.onTouchEvent(event);
                return true;
            }
            return false;
        }
    });

結果: 在此處輸入圖片說明

RecycleView wrap_content應該從API 23開始工作。您可以設置wrap_content,以便在沒有足夠的項目時視圖不會填滿屏幕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM