2011-01-24 12 views
15

画像をクリック可能にするにはどうすればよいですか?私はいくつかの方法を試みたが、成功しなかった。ここ は、私が試した最後のコードは、(それがクリック可能ですが、エラーを取得します)です:Clickable image - 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" /> 

このコードを実行している、と私はこのエラーを取得した画像をクリックすると: HERE

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

答えて

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 /描画可能/ to_top_button.pngでエンコードされた属性を定義します。ユーザーがボタンをクリックすると、メソッドscrollToTop()が呼び出されます。このメソッドは、レイアウトをコンテンツレイアウトとしてに設定するクラスで宣言する必要があります。この方法はまた、あなたの入力の手間を節約し、クリック時のハンドラを定義

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

は、メモリフットプリントのために有益である匿名内部クラスへの必要性を、防ぐことができます。

+8

これは機能しますが、今は画像がボタンの中にあります。これを修正するには、android:background = "@ null"という行を追加して、すべての作品を完璧にしてください! – user484146

+0

その答えを参考にしてもらえますか? –

+0

正しい背景は 'android:background ="?android:selectableItemBackground "'です。 – thirtythreeforty

3

ImageButtonはあなたがやりたいのか?

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

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

+0

私はclickImage(ビュービュー)で試してみましたが、OnClickListnerの原因です。イメージボタンが透明で、画像のみを表示する場合(ボタンなし)、私はそれを使用できます。 – user484146

+0

ああ、onCreateでクリックリスナーを明示的に設定している場合は、レイアウトにonClick属性を設定しないでください。 –

+0

私はアンドロイド:onClick = "clickImage"をコードから削除しようとしました。その結果、クリックすると何も起こりません。 – user484146

0

あなたがイメージがあなたのXMLにクリックされたときに "clickImage" を呼び出すためのonclickメソッドを設定して、コード内にclickImageメソッドを作成していません。あなたはonclickリスナーをまったく設定する必要はありません。 XMLからメソッドを実装するだけで、設定する必要があります。その他として