ScrollView嵌套RecyclerView滾動衝突

ScrollView嵌套RecyclerView滾動衝突

1. 概述

使用ScrollView嵌套RecyclerView會造成滾動衝突。這個問題可以使用NestedScrollView來解決。

2.佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rl_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingLeft="5dp"
            android:paddingRight="5dp">


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="10dp"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="10dp"
                android:gravity="center_vertical"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="top|left"
                    android:text="單號:" />


                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/rv_num"
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:minHeight="20dp" />

            </LinearLayout>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@android:color/black"
                android:text="最多可上傳4張"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@android:color/black"
                android:text="最多可上傳4張"/>
                ...
        </LinearLayout>
    </androidx.core.widget.NestedScrollView>
</LinearLayout>


3.MainActivity

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRV;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 運單號列表
        mRV = (RecyclerView) findViewById(R.id.rv_num);
        // 防止卡頓
        mRV.setHasFixedSize(true);
        mRV.setNestedScrollingEnabled(true);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setSmoothScrollbarEnabled(true);
        // 取消recycleview的滑動
        mRV.setLayoutManager(linearLayoutManager);
        List<String> list = new ArrayList<>();
        for(int i = 0; i < 30;i++){
            list.add("020-88888"+i);
        }
        mRV.setAdapter(new RVAdapter(list));
    }
}

Demo下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章