RecyclerView
をScrollView
の内部に実装しています。ページ全体に1つのスクロール動作しか持たないためには、NonScrollRecyclerView
バージョンを実装します。次のように実装は次のとおりです。Android SDKのスクロールしないRecyclerViewのスクロールの問題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);
}
}
私はSDK 23に私のビルドとターゲット設定を更新したら、私はトラブルNonScrollRecyclerView
を含むページをスクロールしています。具体的な問題は、リサイクラのビュー部分に達するまでページがOKにスクロールし、一度このビューにスクロールすると、スクロールできなくなったことです。
私はSDK 22でこの問題に直面しDONOTし、次のように
の下に私のXMLは次のとおりです。
XML@layout/rv
はリサイクルビューが含まれている
<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 - レイアウト/ RV @
<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>
RecyclerViewの代わりにLinearLayoutを使用するのはなぜですか?あなたは本質的に、RecyclerViewをLinearLayoutに変えてしまいますが、オーバーヘッドはかなり増えます。 –
上記のコメントに同意して、単にrecyclerViewを削除してください。これを考慮すると、http:// stackoverflowのXMLレイアウトの問題については尋ねません。com/questions/29956014/why-should-we-use-xml-layouts – Nanoc
要件に応じてyout独自の線形レイアウトマネージャを作成できます。このリンクをチェックしてくださいhttps://github.com/serso/android-linear- layout-manager/blob/master/lib/src/main/java/org/solovyev /アンドロイド/ビュー/llm/LinearLayoutManager.java –