#android #android-layout #android-widget
#Android #android-layout #android-виджет
Вопрос:
У меня есть пользовательский вид, в котором я рисую много растровых изображений,
Теперь я хочу изменить растровое изображение, когда пользователь нажимает на него.
Как это сделать …?
вот мой метод onDraw для пользовательского представления.
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Bitmap mBitmap = null;
int x = row * 20;
int y = clm * 20;
System.out.println("the x=" x "y=" y);
int counter = 0;
for (int a = 0; a <= x; a = 20)
for (int b = 0; b <= y; b = 20) {
mBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.test);
canvas.drawBitmap(mBitmap, a, b, null);
counter ;
}
}
Ответ №1:
Чтобы сделать более одного растрового изображения интерактивным, вам нужно будет использовать класс ViewGroup, поскольку OnClickListener реализован в представлении.
Обновить
Вы понимаете, что представления находятся внутри макетов. когда вы видите 5 кнопок на экране, это 5 представлений внутри Layout (ViewGroup). Добавляемые вами прослушиватели находятся в представлениях. Если у вас есть несколько растровых изображений, которые вы хотите щелкнуть, вам нужно создать как imageviews и добавить их в макет. Если вы хотите расположить их в определенном порядке, вам необходимо создать пользовательскую группу просмотра. В пользовательском представлении вы можете установить щелчок только для всего представления, а не для его частей. Может быть, вы можете переопределить событие просмотра onTouch и захватить координаты x, y касания и определить, какая часть нажата с помощью множества вычислений. Но это большой взлом, и view group — естественный способ ведения дел.
Комментарии:
1. Вам нужно поместить свои растровые изображения в imageviews, а затем поместить imageviews в макет (ViewGroup). Затем прослушиватели устанавливаются на imageviews
2. в моем пользовательском представлении нет макета.
Ответ №2:
View.SetOnClickListner()
работает для любого представления, просто замените View на ваш CustomView здесь. вы получаете доступ к представлению, на котором произошел щелчок. затем вы можете изменить растровое изображение вида.
Комментарии:
1. Он работает на всем пользовательском представлении, но в моем пользовательском представлении много растровых изображений… Я хочу прослушивать каждое растровое изображение.