Android 如何在ScrollView的元素上启动OnTouchListener,但仅当用户不滚动时?

Android 如何在ScrollView的元素上启动OnTouchListener,但仅当用户不滚动时?,android,android-layout,scrollview,ontouchlistener,Android,Android Layout,Scrollview,Ontouchlistener,我管理水平滚动视图有一个巨大的问题。它有一个水平的线性布局,有很多垂直的线性布局,其中有一个文本和一个图像 我希望当用户按下垂直线性布局时,必须调用ontouchlistener启动我的应用程序的新功能 问题是,当用户滚动scrollview时,会调用verticallinearlayouts的ontouchlistener,我不希望这样 如何解决这个问题 谢谢 我的代码: final HorizontalScrollView hsv = new HorizontalScrollView(thi

我管理水平滚动视图有一个巨大的问题。它有一个水平的线性布局,有很多垂直的线性布局,其中有一个文本和一个图像

我希望当用户按下垂直线性布局时,必须调用ontouchlistener启动我的应用程序的新功能

问题是,当用户滚动scrollview时,会调用verticallinearlayouts的ontouchlistener,我不希望这样

如何解决这个问题

谢谢

我的代码:

final HorizontalScrollView hsv = new HorizontalScrollView(this);
    RelativeLayout.LayoutParams hsvParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
    hsvParams.addRule(RelativeLayout.BELOW,6);
    hsv.setBackgroundColor(0x55383838);
    hsv.setLayoutParams(hsvParams); 
    hsv.setVisibility(View.GONE); //inicialmente está oculto

    LinearLayout hsvll = new LinearLayout(this);  
    hsvll.setOrientation(LinearLayout.HORIZONTAL);  
    hsvll.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    hsvll.setPadding(0, 0, 0, 5);

    createThumbnails();

    List <LinearLayout> thumbnailLinearLayouts = new ArrayList<LinearLayout>(); 


for (int i=1; i<=squareGLSurfaceView.pages.size();i++){ //el tope es <=pages.size() porque hay que recordar que se ha añadido una página en blanco al principio, por lo que la última página será = .size(). Nos guiamos por pages.size en lugar de thumbnails.size() porque thumbnails.size() puede haber crecido para añadir una página en blanco al final, que no queremos mostrar
            LinearLayout ll = new LinearLayout(this);  
            ll.setOrientation(LinearLayout.VERTICAL);  
            ll.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
            ll.setPadding(10, 0, 10, 0);
            thumbnailLinearLayouts.add(ll);     

            TextView tv = new TextView(this);  
            tv.setText(""+(i));
            tv.setGravity(Gravity.RIGHT);
            ll.addView(tv);

            ImageView iv = new ImageView(this);
            iv.setImageBitmap(thumbnails.get(i));
            ll.addView(iv);

            hsvll.addView(ll);  
        }

hsv.addView(hsvll);
    rl.addView(hsv);

    for (int i=0;i<thumbnailLinearLayouts.size();i++){
        final int auxIndex=i;
        thumbnailLinearLayouts.get(i).setOnTouchListener(new OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event) {                 
                MagazineStatus.currentPage=auxIndex;
                hsv.setVisibility(View.GONE);
                return true;                }                               
        });
    }
final HorizontalScrollView hsv=新的HorizontalScrollView(此);
RelativeLayout.LayoutParams hsvParams=新的RelativeLayout.LayoutParams(LayoutParams.FILL\u父级,LayoutParams.WRAP\u内容);
hsvParams.addRule(下面的RelativeLayout.6);
hsv.setBackgroundColor(0x553838);
hsv.setLayoutParams(hsvParams);
hsv.setVisibility(View.GONE)//埃斯塔奥库尔托酒店
LinearLayout hsvll=新的LinearLayout(本);
hsvll.设置方向(线性布局.水平);
hsvll.setLayoutParams(新的LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容));
hsvll.setPadding(0,0,0,5);
创建缩略图();
List thumbnailLinearLayouts=新建ArrayList();

对于(int i=1;i问题似乎是您正在使用
OnTouchListener
。请尝试改用
OnClickListener

onClick()
-当用户触摸项目(处于触摸模式时),或使用导航键或轨迹球聚焦项目并按下适当的“回车”键或按下轨迹球时调用

onTouch()
-在用户执行符合触摸事件条件的操作时调用,包括按下、释放或屏幕上的任何移动手势(在项目范围内)

您可以阅读更多有关触摸和单击之间区别的信息