Android: событие click / touch не работает после перевода холста - PullRequest
1 голос
/ 28 июля 2011

У меня есть FrameLayout, который содержит несколько ImageView. На основной активности я записываю события касания, чтобы переместить мой FrameLayout и изображения внутри пальцем (перетащить).

Для этого я вызываю canvas.translate (x, y) внутри onDraw framelayout, который вызывается invalidate () в обработчике событий касания активности.

Все работает как шарм, за исключением того, что после перевода я не могу нажать на свой ImageView. Фактически, слушатель щелчка каждого изображения все еще находится в исходном месте перед переводом.

Я прочитал, что я должен вручную обновлять макет каждого изображения после перевода, но как это сделать? Если я изменю поле с помощью значения перевода, изображения будут идти в два раза дальше ...

Я был бы очень признателен за любую помощь в этом.

Приветствие.

Вот frameLayout, где я перевожу холст в методе onDraw () (ImageView добавляется к этому FrameLayout в моей основной деятельности).

public class TopView extends FrameLayout {

public float mPosX = 0;
public float mPosY = 0;

public TopView(Context context)
{
    super(context);
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(1920, 3200, Gravity.CENTER);
    this.setLayoutParams(lp);
    setWillNotDraw(false);
}

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.translate(this.mPosX, this.mPosY);

}

}

1 Ответ

1 голос
/ 05 сентября 2011

Вы можете использовать setPadding (this.mPosX, this.mPosY, 0,0) в конструкторе.Это должно работать.

...