如何停止列表视图上的滚动动画?
How can I stop the scrolling animation on a listview?
是否可以阻止 ListView
滚动?我目前有一个 ListView
,顶部有一个边距,用于显示位于后面的图像视图。我的目标是在用户向上滚动时覆盖 ListView
后面的 ImageView
,随着 ListView
向上滚动,它也会关闭它最终隐藏 ImageView
坐在它后面。我目前正在这样做,但我想弄清楚如何停止 ListView
上的滚动动画,直到 ListView
关闭它的边距。 ('mainItemDisplayer' 是 ListView
。)
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//mainItemDisplayer.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_CANCEL, 0, 0, 0));
int scrolledOffset = mainItemDisplayer.getVerticalScrollOffset();
if (scrolledOffset!=mainItemDisplayer.mInitialScroll) {
//if scroll position changed
boolean scrollUp = (scrolledOffset - mainItemDisplayer.mInitialScroll) < 0;
mainItemDisplayer.mInitialScroll = scrolledOffset;
if (scrollUp){
Log.d("Scrolling", "UP");
} else {
//mainItemDisplayer.setEnabled(false);
//Scrolling down
Log.d("Scrolling", "DOWN");
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mainItemDisplayer.getLayoutParams();
//layoutParams.setMargins(0, mainItemDisplayer.mInitialScroll, 0, 0);
layoutParams.height += scrolledOffset;
mainItemDisplayer.setLayoutParams(layoutParams);
//((FrameLayout.LayoutParams) mainItemDisplayer.getLayoutParams()).setMarginEnd(mainItemDisplayer.mInitialScroll);
//mainItemDisplayer.setLayoutParams(layoutParams);
return;
}
}
//mainItemDisplayer.setEnabled(true);
}
我不确定我是否理解您想要实现的目标,但听起来您只需要列表视图的两个 xml 属性:
paddingTop="<yourmargin>dp"
和(技巧!)
clipToPadding="false"
。
是否可以阻止 ListView
滚动?我目前有一个 ListView
,顶部有一个边距,用于显示位于后面的图像视图。我的目标是在用户向上滚动时覆盖 ListView
后面的 ImageView
,随着 ListView
向上滚动,它也会关闭它最终隐藏 ImageView
坐在它后面。我目前正在这样做,但我想弄清楚如何停止 ListView
上的滚动动画,直到 ListView
关闭它的边距。 ('mainItemDisplayer' 是 ListView
。)
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//mainItemDisplayer.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_CANCEL, 0, 0, 0));
int scrolledOffset = mainItemDisplayer.getVerticalScrollOffset();
if (scrolledOffset!=mainItemDisplayer.mInitialScroll) {
//if scroll position changed
boolean scrollUp = (scrolledOffset - mainItemDisplayer.mInitialScroll) < 0;
mainItemDisplayer.mInitialScroll = scrolledOffset;
if (scrollUp){
Log.d("Scrolling", "UP");
} else {
//mainItemDisplayer.setEnabled(false);
//Scrolling down
Log.d("Scrolling", "DOWN");
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mainItemDisplayer.getLayoutParams();
//layoutParams.setMargins(0, mainItemDisplayer.mInitialScroll, 0, 0);
layoutParams.height += scrolledOffset;
mainItemDisplayer.setLayoutParams(layoutParams);
//((FrameLayout.LayoutParams) mainItemDisplayer.getLayoutParams()).setMarginEnd(mainItemDisplayer.mInitialScroll);
//mainItemDisplayer.setLayoutParams(layoutParams);
return;
}
}
//mainItemDisplayer.setEnabled(true);
}
我不确定我是否理解您想要实现的目标,但听起来您只需要列表视图的两个 xml 属性:
paddingTop="<yourmargin>dp"
和(技巧!)
clipToPadding="false"
。