TextView在图库中

我有可滚动的TextViewGallery当我启用的TextView onTouchEvent() ,我不能导航Gallery ,如果我禁用onTouchEvent() ,我可以向左滚动Gallery但不能向下滚动到TextView

我试图做技巧,像发送相同的MotionEvent()GalleryTextView ..任何想法如何解决它?

Solutions Collecting From Web of "TextView在图库中"

你有没有尝试在画廊中使用ScrollView? 这里是一些工作的例子: ScrollView里面的画廊,都滚动独立

嘿,你必须尝试这个代码,这将有助于你的问题

 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; } 

我的答案 :

 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); } } } 

感谢@teepee为解决scheme提供了一个巨大的提示:D

在onTouch事件中,为什么不使用onClick事件来处理onView事件

尝试在onTouch事件中设置return false

TextView和/或Gallery可能会将注意力从ListView移除,如果您使用的是一种滚动function或滚动function,从而无法上下滚动,请尝试移除TextView和Gallery的可调焦function,看看是否有帮助在所有。 那么你应该仍然可以使用你的touchEvents …只是一个想法,不知道它是否会真正解决这个问题。 希望我能有更多的帮助。

创build一个扩展容器布局并包含可滚动TextView的自定义视图。 将其用作您的图库项目。