onDraw не вызывается в пользовательском представлении, расширяющем представлении, а не в группе просмотра - PullRequest
0 голосов
/ 16 января 2020

Есть много похожих вопросов, и поэтому это может показаться дубликатом, но, пожалуйста, прочитайте сначала.

Я прошел через все следующие вопросы, и он не работал для меня

  1. onDraw () не вызывается в пользовательском представлении
  2. сделать недействительным представление без перерисовки на API 25
  3. Android Пользовательский макет - onDraw () никогда не вызывается
  4. view.invalidate () не работает для перерисовки изображения
  5. Почему onDraw не вызывается после invalidate ()?
  6. Android Просмотр Canvas onDraw не выполнен

Позвольте мне уточнить далее

  1. I Я расширяю класс View, а не любую ViewGroup, такую ​​как LinearLayout et c
  2. , когда я вызываю invalidate() из onTouchEvent, он работает нормально
  3. , когда я вызываю invalidate() из другой функции того же класс (undo()) invalidate() не работает
  4. Я также пытался вызвать postInvalidate(), а также вызывал инвалидацию с использованием postDelayed(new Runnable ... invalidate(), кажется, ничего ork.
  5. после прикосновения к кнопке отмены, когда я касаюсь вида. dr aws ожидаемый результат немедленно.

Любое предложение о том, в чем может быть проблема?

код выглядит примерно так:

public boolean undo() {
    if (undoStack.isEmpty()) return false;
    redoStack.push(undoStack.pop());
    if (redoStack.size() >= MAX_STACK_SIZE) redoStack.removeElementAt(0);
    // invalidate();
    postInvalidate();
    return true;
}

здесь undoStack содержит предыдущие растровые изображения, которые были нарисованы

Я могу сказать, что отмены и onDraw работают нормально, так как я получаю ожидаемые результаты при касании просмотр после нажатия на кнопку отмены. Также я вызываю эту функцию из основного потока, а не из фонового потока или задачи asyn c.

Любые предложения, пожалуйста. Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...