私はRecyclerView
をLinearLayout
にラップしてあり、期待どおりに機能します。 RecyclerView
のすべてのデータが入力されているのがわかります。ここまでは順調ですね。
LinearLayout
をScrollView
でラップすると、RecyclerView
が空白になります。 RecyclerView
には何も表示されません。どうして?これを機能させる方法。
このページはViewPagerIndicator
のタブの1つなので、そのタブのすべてがScrollView
にある必要があります。
助けてくれてありがとう。
このプロパティをScrollViewに設定します。
Android:fillViewport="true"
ScrollViewは、コンテンツを埋めるためにそれ自体を拡張します
実装確認後の理由は以下のようです。 RecyclerView
がScrollView
に入れられると、測定ステップ中、その高さは指定されず(ScrollView
は任意の高さを許可するため)、その結果、最小高さに等しくなります(実装ごとに)明らかにゼロです。
これを修正するためのオプションがいくつかあります。
RecyclerView
に設定しますScrollView.fillViewport
からtrue
RecyclerView
をScrollView
の外に置きます。私の意見では、これは断然最良の選択肢です。 RecyclerView
の高さが制限されていない場合(これがScrollView
に配置される場合)、すべてのアダプタのビューは垂直方向に十分な場所があり、一度にすべて作成されます。 RecyclerView
の目的を少し損なうリサイクルのビューはもうありません。これ以外は何も助けになりませんでした:
mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
int action = e.getAction();
switch (action) {
case MotionEvent.ACTION_MOVE:
rv.getParent().requestDisallowInterceptTouchEvent(true);
break;
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
私はこの答えを得ました あり 。ありがとう Piyush Gupta そのため。
お役に立てれば :
次の行をrecyclerView xmlに追加します。
Android:nestedScrollingEnabled="false"
試してみてください。recyclerviewはscrollview内で高さが柔軟にスムーズにスクロールされます。
ScrollView内でRecyclerViewを使用することはお勧めできません。
RecyclerViewがコンテンツをラップしているときは、もうリサイクルしていません。データセット内のすべてのレコードには、RecyclerViewがレイアウト階層内にある限り、メモリに保持されているアイテムビューがあります。
詳細はこちら- https://Android.jlelse.eu/Android-dev-tip-4-91b7757b1f0a