Android 触摸事件不发生';不要在ImageView上工作

Android 触摸事件不发生';不要在ImageView上工作,android,imageview,ontouchlistener,Android,Imageview,Ontouchlistener,我试图在图像上发生触摸事件时添加图像按钮。使用ImageView显示图像。但当我触摸图像时,什么也没有发生。 代码附于此 Quick.java ImageView myImageView = (ImageView)findViewById(R.id.imgView); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.india_map); myImageView.setImageBitm

我试图在图像上发生触摸事件时添加图像按钮。使用ImageView显示图像。但当我触摸图像时,什么也没有发生。 代码附于此

Quick.java

 ImageView myImageView = (ImageView)findViewById(R.id.imgView);
   Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.india_map);
   myImageView.setImageBitmap(bitmap);

    myImageView.setOnTouchListener(new OnTouchListener()
 {

     @Override
     public boolean onTouch(View v, MotionEvent event)
     {
         ImageButton  imgbutton=(ImageButton)findViewById(R.id.imageButton1);
         Bitmap image = BitmapFactory.decodeResource(getResources(),R.drawable.image5);  
         imgbutton.setImageBitmap(image); 
         imgbutton.setVisibility(View.VISIBLE);
                 return false;
     }   

});
activity_quick.xml

 <LinearLayout
            android:id="@+id/tab2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:padding="5dp" >

         <ImageView
             android:id="@+id/imgView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scaleType="fitXY"
            android:contentDescription="@string/desc"
            android:src="@drawable/india_map"/>
          <ImageButton
                android:id="@+id/imageButton1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/image5"
                android:contentDescription="@string/desc"
                android:visibility="invisible" />

                </LinearLayout>

请帮助我解决此问题

用于将一个视图置于另一个视图之上

请尝试以下操作:

<FrameLayout
            android:id="@+id/tab2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:padding="5dp" >

         <ImageView
             android:id="@+id/imgView"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:scaleType="fitXY"
             android:contentDescription="@string/desc"
             android:src="@drawable/india_map"/>

          <ImageButton
             android:id="@+id/imageButton1"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:src="@drawable/image5"
             android:contentDescription="@string/desc"
             android:visibility="gone" />

 </FrameLayout>

无需在java代码中设置图像位图。您已经在xml中指定了它们

 myImageView.setOnTouchListener(new OnTouchListener()
 {

     @Override
     public boolean onTouch(View v, MotionEvent event)
     {
         ImageButton  imgbutton=(ImageButton)findViewById(R.id.imageButton1);
         Bitmap image = BitmapFactory.decodeResource(getResources(),R.drawable.image5);  
imgbutton.setImageBitmap(null);        
 imgbutton.setImageBitmap(image); 
         imgbutton.setVisibility(View.VISIBLE);
                 return false;
     }   

});

首先将图像位图设置为空,然后将其他位图设置为空。

将图像视图设置为可单击。在xml中使用android:clickable=“true”

使用TouchListener有什么特殊原因吗?(ex>用于处理夹持或滑动手势)

如果你认为只是“处理点击事件的图像”,我认为使用OnCLIKListNER而不是OnTouChistListar更容易。例如

    View iv = findViewById(R.id.imgView));
    iv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ImageButton  imgbutton=(ImageButton)findViewById(R.id.imageButton1);
            Bitmap image = BitmapFactory.decodeResource(getResources(),R.drawable.image5);  
            imgbutton.setImageBitmap(image); 
            imgbutton.setVisibility(View.VISIBLE);
    });

还有一件事,你可以考虑在主UI线程中解码位图总是不好的,那么如何考虑使用另一个线程或处理位图。您必须将ImageView的高度从fill\u parent更改为wrap\u content…在触摸事件期间,onTouch将被多次调用。您可以在onClick()中执行此操作。。问题是imgView正在填充父级,如何将图像按钮放在ImageView的顶部。顶部的意思是?在上面还是在上面?@rlHaN JiTHiN在上面。@maria看到编辑过的答案。使用

onClickListener
而不是
touchtlistener
。我是这个领域的新手。我将添加另一个线程来处理此单击事件。谢谢你的评论。