我正在尝试在图像上发生触摸事件时添加图像按钮。使用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>
请帮我解决这个问题
答案 0 :(得分: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指定了它们。
答案 1 :(得分: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;
}
});
首先,您将图像位图设置为null,然后设置其他位图。
答案 2 :(得分:0)
将您的imageview设置为可点击。在xml中使用android:clickable =“true”
答案 3 :(得分:0)
使用TouchListener有什么特别的理由吗? (例如,用于处理捏或轻扫手势)
如果你认为只是'处理点击图像事件',我认为它更好&amp;易于使用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来处理位图。