Ответ 1
Этот отвечает на ваш вопрос. Вы должны позволить своей деятельности обрабатывать как onClick, так и Gestures.
Я использовал галерею в своем приложении.
В том, что у меня есть два изображения в каждом элементе галереи, подобном этому
Каждое изображение кролика и мыши объединяется как отдельный элемент галереи.
Итак, я даю onclickListener для обоих изображений, но если я так даю, я не могу прокручивать, касаясь этих изображений... Если я удалю onClickListener для этих отдельных изображений, я могу прокручивать.
Как архивировать как прокрутку, так и onClick для каждого изображения.
Этот отвечает на ваш вопрос. Вы должны позволить своей деятельности обрабатывать как onClick, так и Gestures.
В моем случае я просто использовал функцию Gallery.setOnItemClickListener, когда Listener обрабатывал обратный вызов родительской активности.
Когда у меня было прослушивание активности, как в решении выше, клики не регистрировались для меня.
Я тоже столкнулся с этой проблемой. И через 2 дня работы я нашел идеальное решение для этого:
onItemClickListener
для галереи.В действии слушайте onTouchEvent
галереи и активности, запишите исходную координату
@Override
public boolean onTouch(View v, MotionEvent event) {
x = (int)event.getRawX();
y = (int)event.getRawY();
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
x = (int)event.getRawX();
y = (int)event.getRawY();
return super.onTouchEvent(event);
}
onItemClick
для галереи, вы получаете каждый вид внутри нее и проверяете координату щелчка.
Rect frame = new Rect();
image[i].getGlobalVisibleRect(frame);
if (frame.contains(x, y)) {//do whatever you want}
У меня была такая же проблема, но я решил ее довольно легко. То, что я сделал, это добавить setOnItemClickListener в GalleryView, а затем захватить представление, которое я хотел, что было в моем случае TextView.
private boolean isVisble = true;
gallery_images.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
TextView image_text = ((TextView)arg1.findViewById(R.id.image_text));
if(!isVisble){
isVisble = true;
image_text.setVisibility(TextView.VISIBLE);
}
else{
isVisble = false;
image_text.setVisibility(TextView.GONE);
}
}
});
В вашем случае вы можете сначала проверить, какие изображения показаны, и на основе этой информации вы можете maniuplate вид. Надеюсь, что это поможет
У меня есть несколько галерей в моей деятельности, и я делаю так:
Реализация OnItemClickListener
:
public class ImageBoardActivity extends Activity implements OnItemClickListener {
Переопределение метода onItemClick()
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
// do what you want here...
}
Мое решение:
не делайте этого!
: =)) (потратьте более 6 часов, пытаясь решить это.. не работает для меня...) использовал другой подход (другой макет)