我有一个GridView,可以显示您图库中的图片。当用户滚动列表时,有关图像的详细信息将从左侧生成动画。我在定义GridView项的自定义布局的类中实现了它。它扩展了 LinearLayout 。
OnScrollChangedListener mScrollListener = new OnScrollChangedListener() {
@Override
public void onScrollChanged() {
if (!getGlobalVisibleRect(r)) {
resetAnimation();
} else {
if (checkBounds()) {
showInfo();
}
} else {
hideInfo();
}
方法 resetAnimation()如果动画在屏幕上不可见,则重置动画。方法 checkBounds()将Rect got与 getGlobalVisibleRect(r)和表示屏幕的Rect进行比较,以检查是否应显示详细信息。
我在 onFinishInflate()中添加了这样的监听器:
getViewTreeObserver().addOnScrollChangedListener(mScrollListener);
现在实际问题:
在 API 19,API 18,API 17和API 13 上,一切正常,在真实设备和模拟器上都经过测试。 在API 14(Android 4.0.1和4.0.2)上,onScrollChanged()永远不会在物理设备和模拟器上被触发。
这是一个错误还是我错过了什么?
答案 0 :(得分:1)
而不是OnScrollChangedListener
,您可以尝试使用OnScrollListener
...
gridView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
我不知道为什么它不会在4.0中解雇,但你可以试试这个......