画像をクリック可能にするにはどうすればよいですか?私はいくつかの方法を試しましたが、成功しませんでした。これが私が試した最後のコードです(クリック可能ですがエラーが発生します):
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();
}
他の人が言ったように:これを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ハンドラーを定義すると、入力の手間が大幅に削減され、匿名の内部クラスが不要になるため、メモリフットプリントに役立ちます。
ImageButton はあなたがしたいことをしますか?
表示されるエラーメッセージは、アクティビティにonClickハンドラーと一致するメソッドがないことを意味します。
クリック処理を実装したアクティビティでは、clickImage(View view)
のようなものが必要です。
ImageButtonクラスを使用するだけです... http://developer.Android.com/reference/Android/widget/ImageButton.html
ImageButton ;)を使用します
XMLで画像がクリックされたときに「clickImage」を呼び出すようにonclickメソッドを設定しましたが、コードにclickImageメソッドを作成していません。 onclickリスナーを設定する必要はまったくありません。 XMLからメソッドを実装するだけで設定できます。