Ice Cream Sandwich(そしておそらくHoneycomb)から始めて、ScrollViewの動作の変化を観察します。
Gingerbreadでは、スクロール時に子のonDraw()が呼び出され、クリッピングrectはスクロール位置を適切に考慮していました。
ICSでは、スクロール時に子のonDraw()が呼び出されることはありません。さらに、クリッピングrectには常にフルビューが含まれます。
古い動作を復元する方法を知っていますか?
前もって感謝します、
セバスチャン
Ice Cream Sandwich(そしておそらくHoneycomb)から始めて、ScrollViewの動作の変化を観察します。
Gingerbreadでは、スクロール時に子のonDraw()が呼び出され、クリッピングrectはスクロール位置を適切に考慮していました。
ICSでは、スクロール時に子のonDraw()が呼び出されることはありません。さらに、クリッピングrectには常にフルビューが含まれます。
古い動作を復元する方法を知っていますか?
前もって感謝します、
セバスチャン
わかりました。質問を入力します。アイデアがあり、「問題」が修正されたようです。
これはハードウェアアクセラレーションに関連しています。ScrollViewをオーバーライドする必要があり、そのコンストラクターで、次のようにハードウェアアクセラレーションを無効にします。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
try {
Method setLayerType = getClass().getMethod("setLayerType", Integer.TYPE, Paint.class);
setLayerType.invoke(this, View.LAYER_TYPE_SOFTWARE, null);
} catch (NoSuchMethodException e) {
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
}
その後、スクロール時に子のonDraw()が呼び出され、cliprectが正常になります。