自学内容网 自学内容网

ViewPager升级ViewPager2笔记

原因和收效:
1.ViewPager2支持相同数据不同顺序的界面刷新,ViewPager相同数据只改顺序界面不会刷新;
2.ViewPager2能精确控制每一个fragement的生命周期,即只有在前台的Fragement会收到onResume和onPause,而ViewPager会使所有的Fragent都收到onResume和onPause相关的生命周期

问题1:子Fragment里嵌套ListView,拉到底时反复重绘

有问题的xml布局

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.westone.cx.im.im.imui.view.component.CXViewPager
            android:id="@+id/pager"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/conversation_list_radio_group" />

        <TabLayout
            android:id="@+id/conversation_list_radio_group"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:layout_alignParentBottom="true"
            app:tabGravity="fill"
            app:tabIndicatorColor="@color/cx_background_sub_first_color"
            app:tabMaxWidth="0dp"
            app:tabMode="fixed"
            app:tabPaddingEnd="5dp"
            app:tabPaddingStart="5dp"
            app:tabRippleColor="#00000000">

        </TabLayout>

    </RelativeLayout>

</LinearLayout>

解决方法:重新实现布局

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


    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_above="@+id/conversation_list_radio_group"
        android:layout_weight="1" />

    <TabLayout
        android:id="@+id/conversation_list_radio_group"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_alignParentBottom="true"
        app:tabGravity="fill"
        app:tabIndicatorColor="@color/cx_background_sub_first_color"
        app:tabMaxWidth="0dp"
        app:tabMode="fixed"
        app:tabPaddingEnd="5dp"
        app:tabPaddingStart="5dp"
        app:tabRippleColor="#00000000">

    </TabLayout>

</LinearLayout>

问题2:

ViewPager2禁止滑动viewPager2.setUserInputEnabled(false);

问题3:

ViewPager2去除滑动效果viewPager2.setCurrentItem(position,false)

问题4:

切换Fragmnent时,某个Fragment显示不全,不要把Fragment里的布局设置成View.GONE

要使用View.INVISIABLE.


原文地址:https://blog.csdn.net/dd06s/article/details/144134720

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!