recyclerview 中的 Seekbar 也会移动 recyclerview

Seekbar in recyclerview also moves recyclerview

基本上我已经在嵌套滚动视图中实现了 recyclerview,它在 recyclerview 的每个项目中包含弧形搜索栏。所以当我移动搜索栏时,recyclerview 也在滚动。

我尝试使用 nestedscrollview 和 focusableInTouchMode 选项但没有奏效。

device_list.apply {
            device_list.layoutManager = GridLayoutManager(this@RoomActivity, 2)
            device_list.adapter = DeviceAdapter()
        }
<androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="?android:attr/actionBarSize"
        android:background="@color/colorWhite">

<androidx.recyclerview.widget.RecyclerView
                android:id="@+id/device_list"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/marginSemiGlobal"
                android:layout_marginBottom="@dimen/marginSemiGlobal"
                android:overScrollMode="never"
                android:nestedScrollingEnabled="false"
                android:scrollbars="none" />

 </androidx.core.widget.NestedScrollView>

<com.marcinmoskala.arcseekbar.ArcSeekBar
            app:roundEdges="true"
            android:layout_width="match_parent"
            android:layout_below="@+id/top_layout"
            app:progressBackgroundColor="@color/colorProgressBackground"
            app:progressBackgroundWidth="8dp"
            app:progressColor="@color/colorProgress"
            android:id="@+id/dimmer"
            app:progressWidth="8dp"
            android:layout_height="100dp"
            app:thumb="@drawable/ic_progress_thumb"
            android:layout_centerHorizontal="true" />

我尝试将 setNestedScrollview 设置为 ViewCompact 并在触摸模式下使用焦点,但输出是相同的。

我在 RecyclerView 中使用 WebView 时遇到了类似的问题。我使用以下代码解决了。尝试为 ArcSeekBar 添加 setOnTouchListener

holder.tipContent.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int action = event.getAction();
            switch (action) {
                case MotionEvent.ACTION_DOWN:
                   // Disallow ScrollView to intercept touch events.
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                    break;
                case MotionEvent.ACTION_UP:
                    //Allow ScrollView to intercept touch events once again.
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                    break;
            }
             // Handle RecyclerView touch events.
            v.onTouchEvent(event);
            return true;
        }
    });

希望对您有所帮助。