最新のupdate to RecyclerViewでは、NestedScrollView内でwrap_contentを使用できるようになりました。しかし、私と一緒にうまく座っていない行動があり、答えを探しています。ItemTouchHelperを使用してNestedScrollViewにネストする最新のRecyclerView
問題1:ラッピングは空白を考慮しません。ここに描かれているように、ドラッグアニメーションはアイテム半ば画面をクリップしますRecyclerViewコンテンツの後に空のスペースがある場合、これが意味:
UPDATE:解決済みの問題1.私だけlayout_weightを追加する必要= "1"属性をRecyclerViewに追加します。
問題2:アイテムを削除するとき問題ものと同様、RecyclerViewは、アニメーションの開始時にすぐにラップする - ここに示されているようにクリップするアニメーションを引き起こす:
更新:問題2はまだ解決されていませんが、以前と同じように顕著ではありません。アイテムが削除されると、アイテムはビューポートにクリップされ、ビューポートの下からアニメーションが引き上げられて新しい高さにジャンプするように見えます。
問題3:新しい項目を追加するときに、ScrollViewの最後までスクロールします。しかし、私の追加イベントで次のコードを実行すると、スクロールはすぐにスクロールビューの現在の端にジャンプします。 「アイテムが挿入された後」のコールバックはありますか?
public void addItem(T item) {
items.add(item);
notifyItemInserted(items.size() - 1);
scroll.fullScroll(View.FOCUS_DOWN)
}
UPDATE:問題3はまだ解決していないが、私はこのような順序を逆に回避策が見つかりました:新しい項目を追加するとき
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
そして、以下のコードを。このように、スクロールは常に高さにかかわらず動作します。
nestedScrollView.fullScroll(View.FOCUS_UP);
記事が引用された:
注意をRecyclerViewはその 子供をアニメーション化しますが、それは自身の境界の変更をアニメーション化しないこと。 が変更されたときにRecyclerViewの境界をアニメートするようにする場合は、 Transition APIを使用できます。
私は境界線をアニメーション化する必要はありませんが、スナップしてビューポートを埋める必要があります(リサイクラビューの上に静的ビューがあるのでこの場合match_parentは使用できません)。 )。従って、問題1を解決する。
境界が変更される前に何かしたいと思います。例:アイテムを削除すると、削除がアニメートされ、バインドされた変更が適用されます。従って、問題2を解決する。
逆に、境界が既に変更されている場合、いくつかのことを行いたいと思います。例:新しい項目を追加するには、最初に新しい境界を適用してから、スクロールアニメーションを開始します。従って、問題3を解決する。
どのように私はこれを達成することができますか?