1. 程式人生 > >使用divider解決RecyclerView內容顯示不全的問題

使用divider解決RecyclerView內容顯示不全的問題

使用第三方自定義IdeaScrollView包裹一個LinearLayout,LinearLayout中包裹RecyclerView和divider,divider寬度固定取到RecyclerView的內容顯示完整為止

<com.test.view.IdeaScrollView
    android:id="@+id/ideaScrollView_category_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView10">

    <LinearLayout
        android:id="@+id/ll_root02"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView_category_list_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent">

        </android.support.v7.widget.RecyclerView>

        <View
            android:id="@+id/divider18"
            android:layout_width="match_parent"
            android:layout_height="170dp"
            android:background="@color/foreground"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/recyclerView_category_list_content" />

    </LinearLayout>

</com.test.view.IdeaScrollView>

 

內容顯示不全的根本原因應該就是RecyclerView在計算佈局所使用的高度偏移量時預設沒有計算位於RecyclerView上方的控制元件的高度,所以解決問題的根本方法應該是自定義一個RecyclerView繼承android.support.v7.widget.RecyclerView,重寫onmeasure(),在計算RecyclerView高度時算上上方控制元件所佔高度(過程,程式碼往後補)