可点击的图片 - android

时间:2011-01-24 18:18:17

标签: android image click clickable-image

如何使图像可点击?我尝试了一些方法,但没有成功。 这是我尝试过的最后一个代码(它可以点击但是会出错):

    ImageView btnNew = (ImageView) findViewById(R.id.newbutton);
    btnNew.setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v) {

            // do stuff
          }

        });      

这是xml中的部分:

    <ImageView 
    android:src="@drawable/tbnewbutton" 
    android:text="@string/hello"
    android:layout_width="wrap_content"
    android:layout_alignParentRight="true"
    android:id="@+id/newbutton"
    android:clickable="true"
    android:onClick="clickImage"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" />

运行此代码并单击图像时出现此错误:

  

01-24 19:14:09.534:ERROR / AndroidRuntime(1461):java.lang.IllegalStateException:在活动中找不到clickImage(View)方法

这是解决方案:

XML:

    <ImageButton
    android:src="@drawable/tbnewbutton" 
    android:text="@string/hello"
    android:layout_width="wrap_content"
    android:layout_alignParentRight="true"
    android:id="@+id/newbutton"
    android:clickable="true"
    android:onClick="clickNew"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="@null" />

代码:

    public void clickNew(View v)
{
    Toast.makeText(this, "Show some text on the screen.", Toast.LENGTH_LONG).show();
}

5 个答案:

答案 0 :(得分:24)

正如其他人所说:将其设为ImageButton并定义其onClick属性

<ImageButton
     android:layout_height="wrap_content"
     android:layout_width="wrap_content"
     android:layout_gravity="left"
     android:onClick="scrollToTop"
     android:src="@drawable/to_top_button"
/>

图像在此处以文件res / drawable / to_top_button.png编码。如果用户单击该按钮,则调用方法scrollToTop()。需要在类中声明此方法,该类使用ImageButton作为其内容布局来设置布局。

public void scrollToTop(View v) {
    ...
}

以这种方式定义OnClick处理程序可以节省大量的输入,并且还可以防止对匿名内部类的需要,这有利于内存占用。

答案 1 :(得分:3)

ImageButton能做你想做的吗?

您收到的错误消息表示您的活动中没有与onClick处理程序匹配的方法。

您的活动中应该有clickImage(View view)之类的点击处理实施。

答案 2 :(得分:1)

答案 3 :(得分:1)

使用ImageButton;)

答案 4 :(得分:0)

当您在XML中单击图像时,您已将onclick方法设置为调用“clickImage”,但您尚未在代码中创建clickImage方法。你根本不需要设置onclick监听器。只需从您的XML实现该方法,您就应该设置。