Galería androide sin desplazamiento en clic

De forma predeterminada, cuando se hace clic en un elemento de galería, la galería se desplaza automáticamente para centrar el elemento al que se hizo clic. ¿Cómo puedo anular este comportamiento? No quiero que la galería se desplace hasta el centro cuando se hace clic, quiero que se quede donde está.

6 Solutions collect form web for “Galería androide sin desplazamiento en clic”

Creo que esta es una solución correcta:

@Override public boolean onSingleTapUp(final MotionEvent e) { boolean handled = super.onSingleTapUp(e); onDown(e); return handled; } 

Creo que esto es lo que estás buscando.

Primero crea una clase que se extiende desde la Galería y luego reemplaza el método onSingleTapUp :

 @Override public boolean onSingleTapUp(final MotionEvent e) { final OnItemClickListener listener = getOnItemClickListener(); final View selectedView = getSelectedView(); final float tapX = e.getRawX(); final float tapY = e.getRawY(); if ((selectedView != null) && (listener != null) && (tapX >= selectedView.getLeft()) && (tapX <= selectedView.getRight()) && (tapY >= selectedView.getTop()) && (tapY <= selectedView.getBottom())) { final int selectedPosition = getSelectedItemPosition(); listener.onItemClick(this, selectedView, selectedPosition, selectedPosition); } return true; } 

Nunca usé una galería antes (en realidad tuve que ver una vista de youtube para ver su efecto visual primero 😉

Así que cavé en el código fuente de la galería y me parece que han atado la selección bastante pesado para el posicionamiento, por lo que tendría que anular la clase y hacer un poco de código pesado de hacking, tal vez incluso la reflexión, para alcanzar su meta. Ni siquiera puedo decir si tendrás éxito.

Esto no es una solución, pero una pista de lo que debe esperar si desea darse cuenta de que 😉

La galería tiene un método para anular esto.

  gallery.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { Toast.makeText(HelloGallery.this, "" + position, Toast.LENGTH_SHORT).show(); } }); 

}

No he probado esto … pero puedes intentar lo siguiente:

En el onItemClickListener.onItemClick() , determine la posición seleccionada actualmente usando Gallery.getSelectedItemPosition() y luego establezca la posición usando Gallery.setSelection(int position) . No sé si esto va a funcionar o no, pero usted puede darle una oportunidad.

También hay el OnItemSelectedListener que podría tratar de aprovechar.

Desafortunadamente no parezco tener la capacidad de comentar sobre las publicaciones de otros, sin embargo, para cualquiera que haya encontrado esta pregunta, pero estaba teniendo problemas, tenga en cuenta que si está creando una galería personalizada que anula el método onSingleTap (como sugiere Ohgema) , Debe reemplazar al constructor que toma un Context y un AttributeSet .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.