Sto implementando uno RecyclerView
all'interno di uno ScrollView
. Per avere un solo comportamento di scorrimento sull'intera pagina implemento una versione NonScrollRecyclerView
. L'implementazione è la seguente:Problema di scorrimento di Non Scroll RecyclerView nell'SDK Android 23
public class NonScrollRecyclerView extends RecyclerView {
public NonScrollRecyclerView(Context context) { super(context); }
public NonScrollRecyclerView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollRecyclerView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
if(ev.getAction() == MotionEvent.ACTION_MOVE)
return true;
return super.dispatchTouchEvent(ev);
}
}
Una volta che aggiorno il mio impostazioni di generazione e di destinazione per SDK 23, ho difficoltà a scorrere la pagina contenente il NonScrollRecyclerView
. Il problema specifico è che la pagina scorre OK fino a quando non raggiungo la porzione di visualizzazione del riciclatore e una volta che si scorre su questa vista non riesco più a scorrere, verso l'alto o verso il basso.
I donot affrontare questo problema con SDK 22 e al di sotto
mio xml è la seguente:
XML@layout/rv
contiene la vista riciclatore
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_gray">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/background_gray"
android:orientation="vertical">
<include
layout="@layout/row_mall_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/cv_mall_header"
android:layout_marginTop="8dp"/>
<include
layout="@layout/row_mall_shops"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/cv_mall_shops"
android:layout_marginTop="8dp"/>
<include
layout="@layout/row_mall_coupons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/cv_mall_coupons"
android:layout_marginTop="8dp"/>
<include
layout="@layout/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/cv_mall_feeds"
android:layout_marginTop="8dp"/>
</LinearLayout>
</ScrollView>
XML - @ layout/camper
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_gray"
android:id="@+id/ll_mall_feeds">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:paddingTop="6dp"
android:paddingBottom="6dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_feedcount"
android:textColor="@color/semi_theme_blue"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="12dp"
android:layout_centerVertical="true" />
</RelativeLayout>
<com.project.ui.NonScrollRecyclerView
android:id="@+id/nrv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@android:color/transparent"
android:listSelector="@android:color/transparent" />
</LinearLayout>
Perché non usi solo un LinearLayout invece di un RecyclerView? In pratica, stai trasformando un RecyclerView in un LinearLayout, ma con un sovraccarico molto maggiore. –
Concordo con il commento precedente, basta sbarazzarsi di recyclerView e, se lo si considera, non si è più chiesto problemi di layout xml http: // stackoverflow.it/questions/29956014/why-should-we-use-xml-layouts – Nanoc
puoi creare il tuo layout manager lineare in base alle tue esigenze ... controlla questo link https://github.com/serso/android-linear- Layout-manager/blob/master/lib/src/main/java/org/Solovyev/android/views/LLM/LinearLayoutManager.java –