0

当图像上发生触摸事件时,我正在尝试添加图像按钮。使用 ImageView 显示图像。但是当我触摸图像时没有任何反应。此处附上代码

快速.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>

请帮我解决这个问题

4

4 回答 4

1

使用FrameLayout将视图置于另一个之上。

尝试以下操作:

<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 代码中设置 Image 位图。您已经在 xml 中指定了它们。

于 2013-08-21T05:32:58.420 回答
0
 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;
     }   

});

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

于 2013-08-21T05:38:02.037 回答
0

将您的图像视图设置为可点击。在 xml 中使用 android:clickable = "true"

于 2013-08-21T05:41:44.340 回答
0

使用 TouchListener 有什么特别的原因吗?(例如>用于处理捏合或滑动手势)

如果您认为只是“处理图像的点击事件”,我认为使用 OnClickListener 而不是 OnTouchListener 会更好且更容易。例如...

    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 线程中解码位图始终不是一个好主意,那么考虑使用另一个线程或AsyncTask来处理位图怎么样。

于 2013-08-21T05:49:44.573 回答