2011-03-03 13 views
12

He utilizado la galería en mi aplicación.Android Gallery Ver Problema de desplazamiento cuando onClickListener para los elementos dados

En ese Tengo dos imágenes en cada elemento de la galería como esta

enter image description here

Cada imagen del conejo y el ratón se combina como un solo elemento de la galería.

Así que doy onclickListener para ambas imágenes, pero si doy así no puedo desplazarme tocando esas imágenes ... Si elimino onClickListener para esas imágenes individuales, puedo desplazarme.

Cómo archivar tanto scroll como onClick para cada imagen.

+0

tal vez deberías pensar por qué tu pregunta fue editada antes de hacer un rollback. – WarrenFaith

+1

Entonces, ¿cuál fue su solución después de todo? ¿Cómo lo implementó? Intenté todo en el enlace 'Respuesta aceptada' pero no puedo hacer que funcione. Gracias. –

+0

Funciona bien con el onTouchListener –

Respuesta

4

Esto answers your question. Tienes que dejar que tu actividad se maneje tanto en Click como en Gestos.

+1

aunque no funciona cuando configuro onclick listener para las vistas en el adaptador para los elementos de la galería ... –

+0

Debería usar el onSingleTap desde el detector de gestos ... ¡eso funcionará en su caso! – WarrenFaith

+0

onSingleTap? cuidado de explicar más por favor, ya que tengo el mismo problema que OP pero mi oyente OnClick está dentro de mi baseAdapter – jonney

0

tengo varias galerías en mi actividad y lo hago de esa manera:

Implementación del OnItemClickListener:

public class ImageBoardActivity extends Activity implements OnItemClickListener { 

Anulación onItemClick() método

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) { 
    // do what you want here... 
} 
+0

quiero que cada elemento dentro de los elementos de la galería pueda hacer clic y no todos los elementos de la galería. Lo sé de esta manera. Por favor, lea la pregunta de nuevo tío .. –

+0

¿Qué tal probar el código, ** amigo ** (no me llames así de nuevo!) En mi caso simple con múltiples galerías, el parámetro 'ver' es el ImageView (información de depuración: [email protected]) utilizado dentro de la galería. Entonces, de nuevo, prueba el código, ** amigo **! – WarrenFaith

+0

¿Cómo harías eso si la Galería contiene un 'RelativeLayout'. Entonces, este 'RelativeLayout' consume el toque ... no estoy seguro todavía de cómo solucionarlo. –

3

En mi caso acabo de utilizar el Gallery.setOnItemClickListener con el Listener manejando la devolución de llamada a la Actividad principal.

Cuando tuve la actividad de escuchar como en la solución anterior, los clics no se registraron para mí.

+0

Ninguno de los otros enfoques funcionó para mí y después de encontrar esta respuesta, mis galerías ahora funcionaban como se esperaba. ¡¡Gracias!! – hooked82

3

Me enfrenté a este problema también. Y después de 2 días trabajando, encontré una solución perfecta para esto:

  1. Conjunto onItemClickListener para la galería también.
  2. En la actividad, escuchar onTouchEvent de galería y actividad, anote la prima coordinar

    @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 para la galería, se obtiene cada vista dentro de él y comprobar la coordenada clic.

    Rect frame = new Rect(); 
    image[i].getGlobalVisibleRect(frame); 
    if (frame.contains(x, y)) {//do whatever you want} 
    
+0

+1 gracias por su respuesta .... –

+0

Tengo un problema aquí, donde cuando configuro OnTouchListener en la galería, mi OnItemClickListener deja de funcionar, incluso si devuelvo falso en onTouch. ¿Algunas ideas? –

+0

intenté utilizar mi enfoque, no necesito configurar OnTouchListener a ninguna vista – tsengvn

0

Mi Solución:

no hacen esto!

: =)) (pasar más de 6 horas tratando de resolver este .. no funcionó para mí ...) utilizarse otro enfoque (diseño diferente)

+0

¿cuál es ese diseño diferente? –

+1

Quería poner 2 imágenes en una galería, para obtener una vista previa de una revista, que contiene páginas dobles ... así que la página 1, la página 2-3, el localizador 4-5 ... y así sucesivamente, así que utilicé un diseño como galería para la galería elementos, que contenían dos imageviews, y quería poner conclicklistener a cada imagen. intenté todo (en TouchListener, onClickListener, pirateos con píxeles de densidad ...) no encontré ninguna solución realmente funcional (detecté una vista en otra vista, requirió dos clics ...) así que finalmente configuré cada imagen como un elemento de la galería (el diseño contenía una imagen) y resolvió la disposición a través de los márgenes en el código ...: =) espero que esto ayude, :) – cV2

+0

puede publicar el diseño de muestra para que otros puedan entender fácilmente ... :) –

2

tenía este mismo problema, pero resuelto que sea muy fácil . Lo que hice fue agregar setOnItemClickListener al GalleryView y luego obtuve la vista que quería, que en mi caso era 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); 
        } 

       } 
      }); 

En el caso de que se compruebe en primer lugar que las imágenes se muestran y se basa en que la información se puede maniuplate la vista.Espero que esto ayude

+0

gracias por su solución ....... es su trabajo para mí ... –

Cuestiones relacionadas