2012-03-17 85 views
1

如何使圖像在android中可點擊? 我不想使用imageButton,因爲它將圖像放在按鈕上。 我試着用下面的代碼,但點擊沒有任何反應.. 在XML:使圖像在Android中可點擊2

<ImageView 
android:id="@+id/arrow1" 
android:src="@drawable/arrow" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:layout_x="12dp" 
android:layout_y="90dp" 
android:clickable="true" 
android:onClick="onClick"> 
</ImageView> 

中的.java:

final ImageView diskView4 = (ImageView) findViewById(R.id.arrow1); 


diskView4.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v){ 
     //my codes 
    } 
}); 
+0

安卓的onClick = 「點擊」 刪除此行... – 2012-03-17 10:24:35

+0

更改名稱的onClick在佈局xml文件中。像java中的android:onClick =「imageClick」public void imageClick(View v)不能使用onClick()方法的名字。 – user370305 2012-03-17 10:37:40

回答

3

不需要增加額外的屬性

<ImageView 
android:id="@+id/arrow1" 
android:src="@drawable/arrow" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:layout_x="12dp" 
android:layout_y="90dp" /> 

這會做,你的代碼看起來沒問題。跟蹤您的點擊

diskView4.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v){ 
     System.out.println("image clicked...");//check logcat 
    } 
}); 
+0

謝謝.. logcat在哪裏? – sumit 2012-03-17 10:32:50

+0

請參閱http://developer.android.com/guide/developing/debugging/ddms。html打開logcat選項卡,你可以看到你的系統消息。 – 2012-03-17 10:36:39

+0

是隻適用於linux?因爲我正在使用Windows .. – sumit 2012-03-17 10:46:31

2

將imagebutton的背景設置爲透明,或者更好地設置爲android.R.attr.selectableItemBackground。那麼你甚至有一個像標準無邊界按鈕一樣的onClick效果。

<ImageButton 
      android:background="?android:attr/selectableItemBackground" 
      android:src="@drawable/yourimage "/> 
1

使用android:onClick="doSomething" XML標記非常簡單。

在已充氣的佈局(通常是一個活動),您必須聲明函數像

public void doSomething(View view)

你可以在這裏找到文檔

http://developer.android.com/reference/android/view/View.html#attr_android:onClick

該信息的上下文

通過這種方式,如果圖像onClick不是動態的,你會得到一個更清潔的活動。

編輯

例,在XML佈局

<ImageView 
    android:id="@+id/image_id" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:src="@drawable/image" 
    android:onClick="doSomething" /> 

在活動,如果你想開例如

class ImageActivity extend Activity{ 
    @Override 
    public void onCreate(Bundle params){ //... } 

    public void doSomething(View view){ 
     startActivity(new Intent(this, AnotherActivity.class)); 
    } 
} 

一個新的Activity在你的View元素點擊的視圖,所以你可以識別哪個元素觸發了該功能。

public void doSomething(View view){ 
    if(view.getId() == R.id.image_id) 
     startActivity(new Intent(this, AnotherActivity.class)); 
    else 
     Log.i("Image", "Try to open the Activity from another view different from ImageView") 
} 
1

如果上面的解決方案不適合你,那麼你可以試試這個。

main.xml中

<ImageView 
     android:id="@+id/img_call_icon"   
     android:layout_width="40px" 
     android:layout_height="40px" 
     android:clickable="true" 
     android:onClick="onClickHandler"/> 

而且在MyActivity.java

public void onClickHandler (View v) 
    { 
     switch (v.getId()) { 
     case R.id.img_call_icon: 

     // put your onclick code here 
    } 
} 

謝謝...

+0

謝謝,它顯然是一個很好的方法來做到這一點。 。 – sumit 2012-03-17 17:03:36