Android не перерисовывает недействительное представление в API 16
Я реализовал ZoomView, на котором я рисую много элементов, и когда я нажимаю на один из них, он меняет свой вид и вызывает недействительные вызовы. Это работает везде, где я тестировал (API 8, API 10, API 19), но не работает с API 16.
В API 16 проблема заключается в том, что измененный элемент перерисовывается только тогда, когда я двигаюсь с экраном в моем ZoomView.
И что еще более странно, даже если все элементы идентичны и имеют только различную позицию, некоторые из них перерисовываются при нажатии, а некоторые нет. Работающие элементы - это элементы в верхнем левом углу, которые можно нарисовать на экране в масштабе 1 и перевести [0,0].
Проблема, вероятно, с моим ZoomView, вот упрощенный код:
public class ZoomView extends FrameLayout {
//SOME VARIABLES
public ZoomView(Context context) {
super(context);
setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
setBackgroundColor(getResources().getColor(R.color.background));
scaleDetector = new ScaleGestureDetector(context, new ScaleListener());
}
@Override
public boolean dispatchTouchEvent(final MotionEvent ev) {
//COMPUTE TRANSLATION OR DETERMINE WHERE IT WAS CLICKED
}
@Override
protected void dispatchDraw(final Canvas canvas) {
canvas.save();
canvas.translate(posX, posY);
canvas.scale(scaleFactor, scaleFactor);
v.draw(canvas);
canvas.restore();
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
//COMPUTE SCALE AND CALL INVALIDATE
}
}
}