web-dev-qa-db-ja.com

クリック可能な画像-android

画像をクリック可能にするにはどうすればよいですか?私はいくつかの方法を試しましたが、成功しませんでした。これが私が試した最後のコードです(クリック可能ですがエラーが発生します):

    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:could not find a method clickImage(View)in the activity

こちらのソリューション:

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();
}
16
user484146

他の人が言ったように:これを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ハンドラーを定義すると、入力の手間が大幅に削減され、匿名の内部クラスが不要になるため、メモリフットプリントに役立ちます。

27
Heiko Rupp

ImageButton はあなたがしたいことをしますか?

表示されるエラーメッセージは、アクティビティにonClickハンドラーと一致するメソッドがないことを意味します。

クリック処理を実装したアクティビティでは、clickImage(View view)のようなものが必要です。

3
Cheryl Simon

ImageButtonクラスを使用するだけです... http://developer.Android.com/reference/Android/widget/ImageButton.html

1
Jems

ImageButton ;)を使用します

1
Rainbowbreeze

XMLで画像がクリックされたときに「clickImage」を呼び出すようにonclickメソッドを設定しましたが、コードにclickImageメソッドを作成していません。 onclickリスナーを設定する必要はまったくありません。 XMLからメソッドを実装するだけで設定できます。

0
Keith