在android 2中制作可点击的图像

时间:2012-03-17 10:18:52

标签: android

如何在Android中点击图片? 我不想使用imageButton,因为它将图像放在按钮上。 我尝试使用以下代码,但点击没有任何反应.. 在xml中:

<ImageView 
 android:id="@+id/arrow1" 
 android:src="@drawable/arrow" 
 android:layout_height="wrap_content" 
 android:layout_width="wrap_content" 
 android:layout_x="12dp" 
 android:layout_y="90dp" 
 android:clickable="true" 
 android:onClick="onClick">
</ImageView>
<。>在.java中:

 final ImageView diskView4 = (ImageView) findViewById(R.id.arrow1);


 diskView4.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v){
         //my codes
    }
 });

4 个答案:

答案 0 :(得分:2)

无需添加额外属性

<ImageView 
 android:id="@+id/arrow1" 
 android:src="@drawable/arrow" 
 android:layout_height="wrap_content" 
 android:layout_width="wrap_content" 
 android:layout_x="12dp" 
 android:layout_y="90dp" />

这样做,你的代码似乎没问题。通过

跟踪您的点击次数
diskView4.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v){
         System.out.println("image clicked...");//check logcat
    }
 });

答案 1 :(得分:2)

将imagebutton的背景设置为透明,甚至更好地设置为android.R.attr.selectableItemBackground。那么你甚至可以像标准的无边框按钮一样使用onClick效果。

<ImageButton
            android:background="?android:attr/selectableItemBackground"
            android:src="@drawable/yourimage "/>

答案 2 :(得分:1)

使用android:onClick="doSomething" XML标记非常简单。

在你夸大布局(通常是活动)的上下文中,你必须声明一个类似的函数

public void doSomething(View view)

您可以在此处的文档中找到此信息

http://developer.android.com/reference/android/view/View.html#attr_android:onClick

通过这种方式,如果Image onClick不是动态的,您将获得更清晰的活动。

修改

示例,在XML布局

<ImageView
    android:id="@+id/image_id"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:src="@drawable/image"
    android:onClick="doSomething" />

如果要打开新的活动,请在活动中

class ImageActivity extend Activity{
    @Override
    public void onCreate(Bundle params){ //... }

    public void doSomething(View view){
        startActivity(new Intent(this, AnotherActivity.class));
    }
 }

在View元素中,您可以获得单击的视图,因此您可以识别哪个元素已触发该功能。

public void doSomething(View view){
    if( view.getId() == R.id.image_id)
        startActivity(new Intent(this, AnotherActivity.class));
    else
        Log.i("Image", "Try to open the Activity from another view different from ImageView")
}

答案 3 :(得分:1)

如果以上解决方案对您不起作用,那么您可以试试这个。

main.xml中

<ImageView 
      android:id="@+id/img_call_icon"        
      android:layout_width="40px"
      android:layout_height="40px"
      android:clickable="true"
      android:onClick="onClickHandler"/>

在MyActivity.java中

public void onClickHandler (View v) 
    {
        switch (v.getId()) {
        case R.id.img_call_icon:

        // put your onclick code here
    }
}

...谢谢