web-dev-qa-db-ja.com

android:ScrollView内のRecyclerView

私はRecyclerViewLinearLayoutにラップしてあり、期待どおりに機能します。 RecyclerViewのすべてのデータが入力されているのがわかります。ここまでは順調ですね。

LinearLayoutScrollViewでラップすると、RecyclerViewが空白になります。 RecyclerViewには何も表示されません。どうして?これを機能させる方法。

このページはViewPagerIndicatorのタブの1つなので、そのタブのすべてがScrollViewにある必要があります。

助けてくれてありがとう。

13
nomongo

このプロパティをScrollViewに設定します。

 Android:fillViewport="true"

ScrollViewは、コンテンツを埋めるためにそれ自体を拡張します

36
Sathesh

実装確認後の理由は以下のようです。 RecyclerViewScrollViewに入れられると、測定ステップ中、その高さは指定されず(ScrollViewは任意の高さを許可するため)、その結果、最小高さに等しくなります(実装ごとに)明らかにゼロです。

これを修正するためのオプションがいくつかあります。

  • 特定の高さをRecyclerViewに設定します
  • セットする ScrollView.fillViewportからtrue
  • または、RecyclerViewScrollViewの外に置きます。私の意見では、これは断然最良の選択肢です。 RecyclerViewの高さが制限されていない場合(これがScrollViewに配置される場合)、すべてのアダプタのビューは垂直方向に十分な場所があり、一度にすべて作成されます。 RecyclerViewの目的を少し損なうリサイクルのビューはもうありません。
22

これ以外は何も助けになりませんでした:

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 そのため。

6
neustart47

お役に立てれば :

次の行をrecyclerView xmlに追加します。

Android:nestedScrollingEnabled="false"

試してみてください。recyclerviewはscrollview内で高さが柔軟にスムーズにスクロールされます。

0
iDeveloper

ScrollView内でRecyclerViewを使用することはお勧めできません。

RecyclerViewがコンテンツをラップしているときは、もうリサイクルしていません。データセット内のすべてのレコードには、RecyclerViewがレイアウト階層内にある限り、メモリに保持されているアイテムビューがあります。

詳細はこちら- https://Android.jlelse.eu/Android-dev-tip-4-91b7757b1f0a

0
yoAlex5