Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TwinklingRefreshLayout嵌套NestedScrollView的,里面还有recycleView, #182

Open
liguangze opened this issue Sep 11, 2018 · 25 comments

Comments

@liguangze
Copy link

滑动不顺畅怎么解决呢,去掉TwinklingRefreshLayout, mRcyGroupSall.setNestedScrollingEnabled(false);,这个可以解决,但是没有了刷新了,怎么才能全部兼容到了呢

@chenli3238
Copy link

滑动不顺畅怎么解决呢,去掉TwinklingRefreshLayout, mRcyGroupSall.setNestedScrollingEnabled(false);,这个可以解决,但是没有了刷新了,怎么才能全部兼容到了呢

解决了没有?我也碰到这问题了

@liguangze
Copy link
Author

@chenli3238 还没有,目前就是不顺畅着

@chenli3238
Copy link

@liguangze 我卡了三天了,各种监听事件,改源码都不行

@liguangze
Copy link
Author

@chenli3238 一样,怎么解决好啊

@chenli3238
Copy link

@liguangze 没解决,先放着吧,除非不嵌套NestedScrollView或者ScrollView

@The-WindRises
Copy link

The-WindRises commented Oct 23, 2018

将TwinklingRefreshLayout放在最外层,然后内部放一个MyScrollview
其他所有布局内容放在MyScrollview中 MyScrollview 代码如下

public class MyScrollview extends NestedScrollView {

Context context;
private int downX;
private int downY;
private int mTouchSlop;

public MyScrollview(Context context) {
    super(context);
    mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}

public MyScrollview(Context context, AttributeSet attrs) {
    super(context, attrs);
    mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}

public MyScrollview(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}

@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
    int action = e.getAction();
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            downX = (int) e.getRawX();
            downY = (int) e.getRawY();
            break;
        case MotionEvent.ACTION_MOVE:
            int moveY = (int) e.getRawY();
            if (Math.abs(moveY - downY) > mTouchSlop) {
                return true;
            }
    }
    return super.onInterceptTouchEvent(e);
}

}

@liguangze
Copy link
Author

@1218362859 感谢,的确是可以,

recycleView也需要自己定义
@OverRide
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    int expandSpec = MeasureSpec.makeMeasureSpec(
            Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
    super.onMeasure(widthMeasureSpec, expandSpec);
}

@The-WindRises
Copy link

@liguangze 我8.0有问题 还在解决 你刚写的这个是什么意思?

@The-WindRises
Copy link

已修改,将继承ScrollView改成继承NestedScrollView

@danny70339
Copy link

@liguangze
我也是TwinklingRefreshLayout嵌套NestedScrollView,NestedScrollView在嵌套RecycleView

mNestedScrollView.setNestedScrollingEnabled(false); mRecycleView.setNestedScrollingEnabled(false);
我這樣設置後就能流暢滑動也能刷新或加載
但是卻會越加載越不流暢,之後就閃退了
請問有遇到相同的狀況嗎

@The-WindRises
Copy link

@liguangze
我也是TwinklingRefreshLayout嵌套NestedScrollView,NestedScrollView在嵌套RecycleView

mNestedScrollView.setNestedScrollingEnabled(false); mRecycleView.setNestedScrollingEnabled(false);
这样我设置后就能流畅滑动也。能刷新或加载
但是却会越加载越不流畅,就之后闪退了
请问有遇到相同的状况吗

是你返回的json解析的太慢了吧,后台只返回有用的字段,还有可能你加载的图片后台上传过大

@liguangze
Copy link
Author

@danny70339 闪退报啥错

@danny70339
Copy link

@1218362859 應該不是解析太慢的問題,我試著把佈局改成TwinklingRefreshLayout只嵌套RecycleView跟使用同一隻API來加載,就變得非常順暢也不會閃退

@The-WindRises
Copy link

@danny70339 把整个布局文件代码发出来看下

@danny70339
Copy link

@liguangze 老實說我看log看不太出來是什麼問題,下面是我的log

10-31 10:19:17.563 24528-24528/? E/Zygote: v2
10-31 10:19:17.563 24528-24528/? E/Zygote: accessInfo : 0
10-31 10:19:18.123 24528-24542/? E/GMPM: getGoogleAppId failed with status: 10
10-31 10:19:18.133 24528-24542/? E/GMPM: Uploading is not possible. App measurement disabled
10-31 10:19:18.323 24547-24547/? E/Zygote: v2
10-31 10:19:18.323 24547-24547/? E/Zygote: accessInfo : 0
10-31 10:19:18.343 24528-24528/? E/SamsungNotes$SC$Utils: NoSuchMethodException : java.lang.NoSuchMethodException: getEnableStatus [class java.lang.String, class java.lang.Boolean]
10-31 10:19:18.343 24558-24558/? E/Zygote: v2
10-31 10:19:18.343 24558-24558/? E/Zygote: accessInfo : 0
10-31 10:19:18.743 24547-24583/? E/ServiceManager: [#CMH#] Failed binding To Service EnhanceService
10-31 10:19:18.763 24594-24594/? E/Zygote: v2
10-31 10:19:18.763 24594-24594/? E/Zygote: accessInfo : 0
10-31 10:19:18.953 715-1075/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ id=386, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
10-31 10:19:19.813 715-1187/? E/GameManagerService: remoteCallback died, callback: com.samsung.android.game.IGameManagerCallback$Stub$Proxy@96e169c, cookie: null
10-31 10:19:20.453 323-930/? E/NetlinkEvent: NetlinkEvent::decode(): buffer'change@/devices/battery/power_supply/battery' size:713,format:0
10-31 10:19:20.453 216-290/? E/NetlinkEvent: NetlinkEvent::decode(): buffer'change@/devices/battery/power_supply/battery' size:713,format:0
10-31 10:19:20.533 715-1046/? E/InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed!
10-31 10:19:20.763 24614-24614/? E/Zygote: v2
10-31 10:19:20.763 24614-24614/? E/Zygote: accessInfo : 0
10-31 10:19:21.113 24630-24630/? E/Zygote: v2
10-31 10:19:21.123 24630-24630/? E/Zygote: accessInfo : 0
10-31 10:19:21.343 24614-24614/? E/CII: CommonIMSInterface: VoLTE CSC feature disabled.
10-31 10:19:21.363 24614-24614/? E/CII: CommonIMSInterface: VoLTE CSC feature disabled.
10-31 10:19:21.393 1111-15661/? E/PhoneInterfaceManager: [PhoneIntfMgr] getDataEnabled: no phone subId=-1 retVal=false
10-31 10:19:21.723 24630-24645/? E/ContactsProvider_EventLog: Flush buffer to file cnt : 1 size : 0Kb duration : 92ms lastUpdatedAfter : 1540952361736 ms mFlush_time_threasold : 2000 mCurrentSize : 129
10-31 10:19:25.413 230-230/? E/lowmemorykiller: Error writing /proc/21983/oom_score_adj; errno=22
10-31 10:19:25.483 22234-22278/? E/BtGatt.GattService: [GSIM LOG]: gsimLogHandler: com.android.bluetooth, msg: MESSAGE_STOP_SCAN
10-31 10:19:25.613 715-1187/? E/WifiService: Multicaster binderDied
10-31 10:19:25.703 22234-22248/? E/bt_btif: btif_vhci_sock_cleanup
10-31 10:19:26.013 22234-22253/? E/BluetoothAdapterState: stateChangeCallback : 0
10-31 10:19:26.073 22234-22234/? E/BluetoothAdapterService: onProfileServiceStateChanged() serviceName=com.android.bluetooth.gatt.GattService, state=10, Message sending
10-31 10:19:26.073 22234-22234/? E/BtGatt.GattService: notifyProfileServiceStateChanged
10-31 10:19:26.073 22234-22234/? E/BluetoothAdapterService: handleMessage() - Message: 1
10-31 10:19:26.073 22234-22234/? E/BluetoothAdapterService: processProfileServiceStateChanged() serviceName=com.android.bluetooth.gatt.GattService, state=10, Before synchronized
10-31 10:19:26.333 715-1046/? E/InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed!

@danny70339
Copy link

danny70339 commented Oct 31, 2018

@1218362859 最外面包了一層FrameLayout,但是不知道為什麼顯示不出來

<com.melnykov.fab.FloatingActionButton
    android:id="@+id/fab_add_commodity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal"
    android:layout_marginBottom="30dp"
    android:clickable="true"
    android:paddingBottom="10dp"
    android:src="@mipmap/ic_carera"
    app:fabSize="normal"
    app:fab_colorNormal="@color/button_baker_miller_pink" />

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:background="@color/normal_bg"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/toolbar_color">

        <TextView
            android:id="@+id/seller_data_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/title_seller_detail"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="16sp" />
    </android.support.v7.widget.Toolbar>

    <com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout
        android:id="@+id/rl"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v4.widget.NestedScrollView
            android:id="@+id/sv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">


                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:orientation="vertical">

                    <com.makeramen.roundedimageview.RoundedImageView
                        android:id="@+id/riv_seller_image"
                        android:layout_width="75dp"
                        android:layout_height="75dp"
                        android:layout_gravity="center"
                        android:layout_marginLeft="8dp"
                        android:layout_marginTop="20dp"
                        android:layout_marginRight="8dp"
                        android:src="@drawable/image_load_fail"
                        app:layout_constraintHorizontal_bias="0.501"
                        app:layout_constraintLeft_toLeftOf="parent"
                        app:layout_constraintRight_toRightOf="parent"
                        app:layout_constraintTop_toTopOf="parent"
                        app:riv_oval="true" />

                    <TextView
                        android:id="@+id/tv_seller_name"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginTop="10dp"
                        android:gravity="center"
                        android:textAlignment="center"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/riv_seller_image" />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginTop="10dp"
                        android:layout_marginBottom="20dp"
                        android:orientation="horizontal">

                        <LinearLayout
                            android:id="@+id/linearLayout3"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginEnd="5dp"
                            android:layout_weight="1"
                            android:gravity="end"
                            android:orientation="horizontal"
                            app:layout_constraintBottom_toBottomOf="parent"
                            app:layout_constraintStart_toStartOf="parent">

                            <TextView
                                android:id="@+id/textView46"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="@string/user_review_amount"
                                android:textSize="16sp"
                                app:layout_constraintRight_toLeftOf="@+id/riv_seller_image"
                                app:layout_constraintTop_toBottomOf="@+id/tv_seller_name" />

                            <TextView
                                android:id="@+id/tv_review_amount"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginStart="5dp"
                                android:textColor="@color/black"
                                android:textSize="18sp"
                                app:layout_constraintLeft_toRightOf="@+id/textView46"
                                app:layout_constraintTop_toBottomOf="@+id/tv_seller_name" />

                        </LinearLayout>

                        <LinearLayout
                            android:id="@+id/linearLayout2"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="5dp"
                            android:layout_weight="1"
                            android:gravity="start"
                            android:orientation="horizontal"
                            app:layout_constraintBottom_toBottomOf="parent"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintStart_toEndOf="@+id/linearLayout3">

                            <TextView
                                android:id="@+id/textView47"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="@string/user_commodity_amount"
                                android:textSize="16sp"
                                app:layout_constraintTop_toBottomOf="@+id/tv_seller_name"
                                tools:layout_editor_absoluteX="249dp" />

                            <TextView
                                android:id="@+id/tv_commodity_amount"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:textColor="@color/black"
                                android:textSize="18sp"
                                app:layout_constraintLeft_toRightOf="@+id/textView47"
                                app:layout_constraintTop_toBottomOf="@+id/tv_seller_name" />

                        </LinearLayout>

                    </LinearLayout>

                </LinearLayout>


                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:orientation="horizontal">

                    <RelativeLayout
                        android:id="@+id/rl_follow_state"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginEnd="1dp"
                        android:layout_weight="1"
                        android:background="@color/follow"
                        android:gravity="center">


                        <ImageView
                            android:id="@+id/iv_follow_state"
                            android:layout_width="10dp"
                            android:layout_height="10dp"
                            android:layout_centerVertical="true"
                            android:layout_marginEnd="5dp"
                            android:layout_toStartOf="@+id/tv_follow_state"
                            app:srcCompat="@drawable/plus" />

                        <TextView
                            android:id="@+id/tv_follow_state"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="5dp"
                            android:layout_marginTop="6dp"
                            android:layout_marginBottom="6dp"
                            android:text="@string/follow"
                            android:textColor="@color/white" />
                    </RelativeLayout>

                    <LinearLayout
                        android:id="@+id/rl_follow_amount"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginEnd="1dp"
                        android:layout_weight="1"
                        android:background="@color/setting_text_bg"
                        android:gravity="center">

                        <TextView
                            android:id="@+id/textView51"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="6dp"
                            android:layout_marginEnd="2dp"
                            android:layout_marginBottom="6dp"
                            android:layout_weight="1"
                            android:gravity="end"
                            android:text="@string/follow" />

                        <TextView
                            android:id="@+id/tv_follow_amount"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="2dp"
                            android:layout_weight="1"
                            android:gravity="start"
                            android:textColor="@color/black" />
                    </LinearLayout>

                    <LinearLayout
                        android:id="@+id/rl_fans_amount"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:background="@color/setting_text_bg"
                        android:gravity="center">

                        <TextView
                            android:id="@+id/textView52"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="6dp"
                            android:layout_marginEnd="2dp"
                            android:layout_marginBottom="6dp"
                            android:layout_weight="1"
                            android:gravity="end"
                            android:text="@string/fans" />

                        <TextView
                            android:id="@+id/tv_fans_amount"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="2dp"
                            android:layout_weight="1"
                            android:gravity="start"
                            android:textColor="@color/black" />
                    </LinearLayout>

                </LinearLayout>

                <LinearLayout
                    android:id="@+id/ll_review"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/imageView3"
                        android:layout_width="wrap_content"
                        android:layout_height="20dp"
                        android:layout_gravity="center_vertical"
                        android:layout_marginStart="20dp"
                        android:layout_marginTop="12dp"
                        android:layout_marginBottom="12dp"
                        android:src="@drawable/reviewgood" />

                    <TextView
                        android:id="@+id/tv_good_review_amount"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:textColor="@color/black"
                        android:textSize="16sp" />

                    <ImageView
                        android:id="@+id/imageView4"
                        android:layout_width="wrap_content"
                        android:layout_height="20dp"
                        android:layout_gravity="center_vertical"
                        android:layout_marginStart="20dp"
                        android:src="@drawable/reviewnormal" />

                    <TextView
                        android:id="@+id/tv_normal_review_amount"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:textColor="@color/black"
                        android:textSize="16sp" />

                    <ImageView
                        android:id="@+id/imageView5"
                        android:layout_width="wrap_content"
                        android:layout_height="20dp"
                        android:layout_gravity="center_vertical"
                        android:layout_marginStart="20dp"
                        android:src="@drawable/reviewbad" />

                    <TextView
                        android:id="@+id/tv_bad_review_amount"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:textColor="@color/black"
                        android:textSize="16sp" />

                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/tv_info"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@color/black"
                        android:gravity="center"
                        android:paddingTop="5dp"
                        android:paddingBottom="5dp"
                        android:text="@string/personal_information"
                        android:textColor="@color/white"
                        android:textSize="16sp" />

                    <TextView
                        android:id="@+id/tv_seller_description"
                        android:layout_width="match_parent"
                        android:layout_height="95dp"
                        android:paddingLeft="20dp"
                        android:paddingTop="5dp"
                        android:paddingRight="20dp"
                        android:paddingBottom="5dp"
                        android:textSize="14sp" />
                </LinearLayout>

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/rv_commodity"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/normal_bg"
                    android:overScrollMode="never">

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


            </LinearLayout>
        </android.support.v4.widget.NestedScrollView>
    </com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout>
</LinearLayout>

@The-WindRises
Copy link

@danny70339 看我之前写的评论 然后把android.support.v4.widget.NestedScrollView
改成MyScrollview的路径 最后 把RecyclerView的android:layout_height改成match_parent

@danny70339
Copy link

@1218362859 還是一樣的狀況,另外我發現了新的現象,當我滑到越下面的時候會越慢反之越上面越滑順,舉例來說加設我RecyclerView裡已經加載了150個item,當我往下滑越靠近第150個的時候會開始不滑順,反之當我往回滑越靠近第1個的時候就越滑順

@danny70339
Copy link

@liguangze @1218362859 抱歉兩位我又試了一下發現,這好像是NestedScrollView嵌套RecyclerView的問題,TwinklingRefreshLayout是無辜的我誤會他了
感謝兩位的協助

@The-WindRises
Copy link

@danny70339 解决了?

@danny70339
Copy link

@1218362859 還沒,但是知道確切的方向了,只是想說跟這個庫無關怕造成你們的困擾

@danny70339
Copy link

@liguangze
Copy link
Author

@1218362859 ok 感谢

@danny70339
Copy link

@1218362859 @liguangze
已用RecyclerView加上HeaderView來解決這個問題了

@18640243061
Copy link

就直接把tw放在ns外层就好了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants