Я должен сказать, что у этого подхода может быть цель, но я ее не вижу.Почему вы воссоздаете и рисуете макет каждый раз, когда изображение перерисовывается?
Причина, по которой слушатель onClick не работает, заключается в том, что ваш макет никогда не внедряется в контент мероприятий, вы просто рисуете его (что, я бы не подумал, даже сработало бы для творчества).расположение и кнопка не привязаны ни к чему, я почти уверен, что они будут собирать мусор, что, конечно, здесь не имеет значения, просто говорю.
Также это происходит каждый раз, когда вы рисуете свой холст, что не может быть полезным для производительности или памяти.
Есть ли какая-то причина, по которой вы не просто создаете макет со своим изображением и кнопкой, а затем перемещаете кнопку, когда это необходимо.
Если вы настаиваете на этом подходе, единственное «решение», о котором я могу подумать, - это отслеживать прямоугольник кнопки в представлении вашего изображения, а затем проверять, «щелкнуло» ли событие движения внутри областикнопка была нарисована.
Если вы сообщите нам, почему вы пытаетесь это сделать, мы, вероятно, можем предложить лучшее решение, чем эта реализация, которая на самом деле не кажется необходимой или правильной, но у вас может быть веская причина, которую я не могу придуматьиз.
Обновление
Так что я думаю, исходя из ваших комментариев, что вы хотите сделать, это
Поместите контейнер AbsoluteLayout поверх вашей карты (заполните родительский элемент) или просто поместите карту в такой контейнер, в любом случае.
Затем поместите кнопки в этот контейнер макетов (через xml или программно, на самом деле не имеет значения)
Затем установите макет x / y / видимость этих кнопок