如何在Android 2.2下禁用HorizontalScrollView上的过度滚动?
我使用反射:
HorizontalScrollView hh = (HorizontalScrollView) findViewById(R.id.chartHorizontalView);
viewCls = hh.getClass();
try {
Method m = viewCls.getMethod("setOverScrollMode",
new Class[] { int.class });
int OVER_SCROLL_NEVER = (Integer) viewCls.getField(
"OVER_SCROLL_NEVER").get(hh);
m.invoke(hh, OVER_SCROLL_NEVER);
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:7)
在文档中,请致电setOverScrollMode
现货AOSP 在姜饼之前没有过度滚动效应,所以如何禁用它们的问题毫无意义。一些制造商增加了他们自己的过度滚动效果,例如TouchWiz弹跳效果。显然,由于效果不是SDK的一部分,SDK中没有禁用它们的方法!
在撰写本文时,Froyo及其下方约占2%。在我看来,明智的做法是定位sdk版本> = 9并使用像
这样的东西 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
horizontalScrollView.setOverScrollMode(View.OVER_SCROLL_NEVER);
}
这样大多数用户都不会看到发光过度滚动效果,但使用TouchWiz运行Froyo的2%或更少用户仍会看到反弹效果。如果你真的,绝对必须禁用所有过度滚动效果{@ 3}}或使用反射来处理TouchWiz,特别类似于use an onScrollListener to prevent scrolling past the beginning or end或this example