Android Gallery View проблема прокрутки, когда onClickListener для заданных предметов - PullRequest
12 голосов
/ 03 марта 2011

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

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

enter image description here

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

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

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

Ответы [ 6 ]

4 голосов
/ 03 марта 2011

Это отвечает на ваш вопрос . Вы должны позволить вашей активности обрабатывать как onClick, так и Gestures.

3 голосов
/ 08 декабря 2011

Я тоже сталкивался с этой проблемой.И после 2 дней работы я нашел для этого идеальное решение:

  1. Установить onItemClickListener и для галереи.
  2. В упражнении прослушайте 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);
    }
    
  3. onItemClick для галереи,вы получаете каждый вид внутри него и проверяете координаты клика.

    Rect frame = new Rect();
    image[i].getGlobalVisibleRect(frame);
    if (frame.contains(x, y)) {//do whatever you want}
    
3 голосов
/ 19 мая 2011

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

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

2 голосов
/ 30 июля 2012

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

                }
            });

В вашем случае вы можете сначала проверить, какие изображения отображаются, и на основе этой информации вы можете манипулировать видом.Надеюсь, это поможет

0 голосов
/ 25 марта 2012

Мое решение:

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

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

0 голосов
/ 07 марта 2011

В моей деятельности несколько галерей, и я делаю это следующим образом:

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