Можно ли создавать разные действия для щелчка по одному и тому же ImageView, но по разным частям? Скажем, у меня есть ImageView, и я хочу, чтобы он действовал по-другому, если я нажимаю на верхнюю часть ImageView, и по-другому, если я нажимаю на среднюю часть ImageView. Могу ли я добиться этого в android
возможный дубликат stackoverflow.com/questions/16670774/clickable-area-of-image
Возможный дубликат кликабельная область изображения




Лучший способ - добавить OnTouchListener к просмотру и самостоятельно обработать событие щелчка, связанное с координатой касания.
Но если вам нужен простой способ, который я не предлагаю, потому что он может привести к проблемам с производительностью, вы можете добавить прозрачные представления поверх вашего ImageView и добавить для них разные OnClickListener.
если у вас есть фиксированные разделы в вашем просмотре изображения, вы можете использовать макет кадра и добавить 3 (например) прозрачных представления в ваше изображение, а затем установить прослушиватели щелчков для этих представлений. но если у вас есть динамические разделы, вы можете справиться с этим, объединив onTouchListener и onClickListener, например:
// just store the touch X,Y coordinates
View.OnTouchListener touchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// save the X,Y coordinates
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
lastTouchDownXY[0] = event.getX();
lastTouchDownXY[1] = event.getY();
}
// let the touch event pass on to whoever needs it
return false;
}
};
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// retrieve the stored coordinates
float x = lastTouchDownXY[0];
float y = lastTouchDownXY[1];
// use the coordinates for whatever or check the clickable areas
Log.i("TAG", "onLongClick: x = " + x + ", y = " + y);
}
};
Я думаю, что лучший способ для этого - объявить frameLayout в качестве родительского представления, затем вы можете объявить Просмотры на своем imageView, а затем щелкнуть каждое представление будет выполнять то, что вы хотите.
Посмотри на этот stackoverflow.com/a/4023317/6055194