onDraw () в представлении рисует за макетом - PullRequest
12 голосов
/ 28 января 2011

Хорошо, вот сделка.Я хочу переместить элементы в расширенном классе галереи, чтобы изменить порядок изображений.То, как я это делаю сейчас:

  • при длительном нажатии удалить текущий выбранный элемент,
  • используйте onDraw(), чтобы нарисовать то же изображение, чтобы я мог перемещать его, используя onTouchEvent()
  • при выпуске снова добавьте элемент

Это работает нормально, но проблема в том, что при использовании метода onDraw() он будет рисовать изображение за элементами галереи.Есть ли способ изменить приоритет того, что нарисовано?

1 Ответ

33 голосов
/ 02 февраля 2011

Ну, я узнал об этом после перехода в совершенно ином направлении = /

Вот решение для людей, у которых такая же проблема:

В конструкторе (или где-либо еще, вы инициализируете компонент) установить setWillNotDraw(false) и переопределить dispatchDraw().dispatchDraw() рисует ViewGroup потомков, так что вы можете сами решить, хотите ли вы рисовать позади или поверх других видов.

Пример взят из Пользовательский рисунок в верхней части представления галереи (и этовзгляды детей)

@Override
protected void dispatchDraw(Canvas canvas) {
    super.dispatchDraw(canvas);

    // do your drawing stuff here
    canvas.drawPath(mPath,mPaint);
}
...