Galería / AdaptadorEnvío de dibujo infantil

Estoy utilizando una vista Galería donde la vista correspondiente a cada elemento no es trivial y consiste en texto, así como varios botones.

Cuando hago clic para arrastrar la vista de galería (en algún lugar que no esté en uno de los botones), el estado de dibujo del botón cambia a presionado y aparece como si todos los botones estuvieran presionados actualmente. Además, el mismo comportamiento ocurre para el estado seleccionado (por ejemplo, todo el texto del texto TextViews hijo cambia de color).

Estoy tratando de evitar este comportamiento y han encontrado el atributo androide: duplicateParentState xml, así como la propiedad setDuplicateParentStateEnabled. Esto parece que debe lograr lo que estoy tratando de hacer, pero parece no tener ningún efecto.

¿Algunas ideas?

3 Solutions collect form web for “Galería / AdaptadorEnvío de dibujo infantil”

Tal vez un poco en el lado final, pero después de haber corrido en este problema yo recientemente tengo una solución.

DispatchSetSelected y dispatchSetPressed realmente no ayudan aquí, ya que los métodos que realmente necesita anular son privados dentro de Gallery.

La solución es agregar un diseño extra (he usado una subclase de LinearLayout) alrededor de la vista secundaria, que anula a setPressed (boolean) y simplemente la ignora. Esto impide a la galería forzar su estado presionado sobre los niños, al mismo tiempo que permite que estos niños se activen directamente, y no detener la propagación de los eventos hacia arriba.

No está seguro de dónde entra en juego la propiedad duplicateParentState, pero el rompimiento de la fuente muestra que nunca se tiene en cuenta para los estados seleccionados y presionados. Me gustaría crear una clase de vista personalizada y reemplazar los métodos dispatchSetSelected y dispatchSetPressed.

Si se extiende desde Galería para crear su propia versión personalizada de la misma, simplemente puede hacer:

@Override public boolean onDown(MotionEvent e) { // Ignore onDown events in order to avoid having every child's state set to 'pressed' return true; } 

Esto permitirá que los niños de la galería personalizada reciban adecuadamente los eventos de clic y los trabajos de deslizamiento / desplaza- miento según lo previsto.

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