Как я могу отключить overcroll на HorizontalScrollView под Android 2.2?
Я использую для этого размышление:
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(); }
Это правильно в документах, вызовите setOverScrollMode
На складе AOSP не было эффекта сбрасывания до Gingerbread , поэтому вопрос о том, как отключить их, не имеет смысла. Некоторые производители добавили свои собственные эффекты сверхсброса, такие как эффект отскока TouchWiz. Очевидно, что поскольку эффекты не являются частью SDK, в SDK нет способа отключить их!
На момент написания этой статьи, Froyo и ниже заняли около 2%. На мой взгляд, разумная вещь – нацелить версию sdk> = 9 и использовать что-то вроде
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { horizontalScrollView.setOverScrollMode(View.OVER_SCROLL_NEVER); }
Таким образом, большинство пользователей не будут видеть эффект прокрутки свечения, но те 2% или менее пользователи, которые запускают Froyo с TouchWiz, по-прежнему будут видеть эффект отскока. Если вы действительно, абсолютно необходимо отключить все эффекты overscroll, которые вы могли бы использовать onScrollListener, чтобы предотвратить прокрутку в начале или конце или использовать отражение, чтобы иметь дело с TouchWiz, точно подобным этому примеру, или этот