studio setsupportactionbar programacion from fragments con comunicar change activity android scroll textview gallery

android - setsupportactionbar - TextView dentro de la galería



manual de programacion android pdf (7)

Cree una vista personalizada que amplíe el diseño de un contenedor y contenga su TextView desplazable. Use esto como sus elementos de la galería.

tengo TextView y Gallery desplazables cuando onTouchEvent() el onTouchEvent() para TextView , no puedo navegar por la Gallery y si desactivo el onTouchEvent() , puedo desplazarme hacia la derecha y hacia la izquierda en la Gallery pero no puedo desplazarme hacia abajo en TextView .

He intentado hacer trucos, como enviar el mismo MotionEvent() a Gallery And TextView ... ¿ TextView idea de cómo resolverlo?


Oye, tienes que probar este código, te ayudará en tu problema

float oldx; float oldy; @Override public boolean onTouchEvent(MotionEvent event) { boolean result = false; if(event.getAction() == MotionEvent.ACTION_DOWN) { result = super.onTouchEvent(event); } else if (event.getAction() == MotionEvent.ACTION_UP) { result = super.onTouchEvent(event); } else if (event.getAction() == MotionEvent.ACTION_MOVE) { /** * Condition :: Math.abs(oldx - event.getX()) > 10 will check weather user had drag horizontal or vertical. * You can change value 10 according to your requirement */ if(Math.abs(oldx - event.getX()) > 10) { result = super.onTouchEvent(event); } else { result = true; } } oldx = event.getX(); oldy = event.getY(); return result; }


inscrito en el evento onTouch, ¿por qué no utilizas el evento onclick para la vista de texto dentro de la galería onMotionEvent?


Intente configurar el return false en el evento onTouch.


es posible que TextView y / o Gallery TextView el foco de ListView si está usando uno o la capacidad de desplazamiento, lo que hace que no pueda desplazarse hacia arriba y hacia abajo, intente eliminar enfocables para TextView y Gallery y vea si eso ayuda en absoluto. Entonces deberías poder seguir usando tus eventos táctiles ... solo un pensamiento, aunque no estoy seguro de si realmente solucionará el problema. Ojalá pudiera ser más ayuda.


mi respuesta :

public class CustomGallery extends Gallery { public CustomGallery(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public CustomGallery(Context context, AttributeSet attrs) { super(context, attrs); } public CustomGallery(Context context) { super(context); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { float r = (velocityX > 0 ? Math.min(800f, velocityX) : Math.max(-800f, velocityX)); return super.onFling(e1, e2, r, velocityY); } float oldX, oldY; boolean isDown = false; @Override public boolean onInterceptTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: oldX = ev.getX(); oldY = ev.getY(); isDown = true; return super.onInterceptTouchEvent(ev); case MotionEvent.ACTION_MOVE: if (isDown) { float diffX = Math.abs(ev.getX() - oldX); float diffY = Math.abs(ev.getY() - oldY) + 20f; if (diffY > diffX) { return false;// handled by TextView } } return true;// handled by Gallery case MotionEvent.ACTION_UP: isDown = false; return super.onInterceptTouchEvent(ev); default: return super.onInterceptTouchEvent(ev); } } }

gracias por @teepee por proporcionar una gran pista para la solución: D