17

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

    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: エラー/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();
}
4

5 に答える 5

27

他の人が言ったように:これを作成し、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 ハンドラーをこのように定義すると、多くの入力が節約され、匿名の内部クラスが不要になるため、メモリ フットプリントの面でもメリットがあります。

于 2011-01-24T18:51:03.860 に答える
3

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

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

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

于 2011-01-24T18:22:16.577 に答える
1

ImageButtonクラスを使用することもできます... http: //developer.android.com/reference/android/widget/ImageButton.html

于 2011-01-24T18:22:26.193 に答える
1

ImageButtonを使用します;)

于 2011-01-24T18:22:39.953 に答える
0

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

于 2011-01-24T18:24:49.343 に答える