У меня есть 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);
}
}