出来ますか ??タイトルが言ったように
下にスワイプしてレイアウトを更新しますが、レイアウトを固定し、スワイプのガスチャーに沿って下に移動しません
ありがとう - 私は SwipeRefreshLayout を使用しています
出来ますか ??タイトルが言ったように
下にスワイプしてレイアウトを更新しますが、レイアウトを固定し、スワイプのガスチャーに沿って下に移動しません
ありがとう - 私は SwipeRefreshLayout を使用しています
あなたはこのようにしてみてください
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
boolean enable = false;
if(listView != null && listView.getChildCount() > 0){
// check if the first item of the list is visible
boolean firstItemVisible = listView.getFirstVisiblePosition() == 0;
// check if the top of the first item is visible
boolean topOfFirstItemVisible = listView.getChildAt(0).getTop() == 0;
// enabling or disabling the refresh layout
enable = firstItemVisible && topOfFirstItemVisible;
}
swipeRefreshLayout.setEnabled(enable);
}});
listView に paddingTop がある場合、このコードは機能しません
試行錯誤の末、1つの解決策を見つけました
http://www.dailydevbook.de/android-swiperefreshlayout-without-overscroll/
SwipeRefreshLayout を実装できる人向け、それを実現するために
ステップ 1: github から android-support v4 (オープン ソース) をダウンロードします。
ステップ 2:次の Java クラスをプロジェクトの src にコピーします。
note1- (オリジナルとの混乱を避けるために、SwipeRefreshLayout を mySwipeRefreshLayout にリファクタリングします) note2- (これらのクラスを修正し、v4 の代わりに相互のソースを使用します)
STEP3:UPDATE CODEの利用
STEP 4: UPDATE LAYOUT の使用
ステップ 5: mySwipeRefreshLayout.java で、次のコードを見つけて変更します
private void updateContentOffsetTop ( int targetTop) {
final int currentTop = mTarget.getTop ();
if (targetTop> mDistanceToTriggerSync) {
targetTop = ( int ) mDistanceToTriggerSync;
} else if (targetTop < 0 ) {
targetTop = 0 ;
}
// SetTargetOffsetTopAndBottom (targetTop - currentTop);
setTargetOffsetTopAndBottom ( 0 ); // MOD: Prevent Scroll Down Animation
}
私も同じ問題に直面していました。これを試して:
guidesList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int topRowVerticalPosition = (guidesList == null ||
guidesList.getChildCount() == 0) ? 0 : guidesList.getChildAt(0).getTop();
swipeContainer.setEnabled(firstVisibleItem == 0 && topRowVerticalPosition >= 0);
}
});