Подтвердить что ты не робот

Android Gallery View Прокрутка проблемы, когда onClickListener для данных

Я использовал галерею в своем приложении.

В том, что у меня есть два изображения в каждом элементе галереи, подобном этому

enter image description here

Каждое изображение кролика и мыши объединяется как отдельный элемент галереи.

Итак, я даю onclickListener для обоих изображений, но если я так даю, я не могу прокручивать, касаясь этих изображений... Если я удалю onClickListener для этих отдельных изображений, я могу прокручивать.

Как архивировать как прокрутку, так и onClick для каждого изображения.

4b9b3361

Ответ 2

В моем случае я просто использовал функцию Gallery.setOnItemClickListener, когда Listener обрабатывал обратный вызов родительской активности.

Когда у меня было прослушивание активности, как в решении выше, клики не регистрировались для меня.

Ответ 3

Я тоже столкнулся с этой проблемой. И через 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}
    

Ответ 4

У меня была такая же проблема, но я решил ее довольно легко. То, что я сделал, это добавить 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 вид. Надеюсь, что это поможет

Ответ 5

У меня есть несколько галерей в моей деятельности, и я делаю так:

Реализация 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

Мое решение:

не делайте этого!

: =)) (потратьте более 6 часов, пытаясь решить это.. не работает для меня...) использовал другой подход (другой макет)