2011-01-24 1 views
15

어떻게하면 이미지를 클릭 할 수있게 할 수 있습니까? 나는 몇 가지 방법을 시도했지만 성공하지는 못했다. 여기 내가 시도한 마지막 코드입니다 (이 클릭 할 수 있지만 얻을 오류) : 클릭 가능 이미지 - android

<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" /> 

이 코드를 실행, 그리고 난이 오류가 이미지를 클릭 :

ImageView btnNew = (ImageView) findViewById(R.id.newbutton); 
    btnNew.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

      // do stuff 
      } 

     });  

이곳은 XML의 일부입니다 :

: 여기

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을 그 온 클릭이

<ImageButton 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_gravity="left" 
    android:onClick="scrollToTop" 
    android:src="@drawable/to_top_button" 
/> 

이미지는 여기에서 파일 입술/그리기/to_top_button.png으로 인코딩 속성 정의한다. 사용자가 버튼을 클릭하면 scrollToTop() 메서드가 호출됩니다. 이 메서드는 콘텐츠 레이아웃으로 ImageButton이있는 레이아웃을 설정하는 클래스에서 선언해야합니다. 이 방법은 또한 당신에게 입력을 많이 저장하고의 OnClick 핸들러를 정의

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

메모리 풋 프린트를위한 유익한 익명의 내부 클래스의 필요성을 방지 할 수 있습니다.

+8

좋아,이 하나의 작품,하지만 내 이미지는 버튼 안에 있습니다. 그래서 내 레이아웃 제동이야. 이 문제를 해결하려면 android : background = "@ null"을 XML에 추가하면됩니다. – user484146

+0

그 답을 도움이 될만한 것으로 표시 하시겠습니까? –

+0

사용할 올바른 배경은'android : background = "? android : selectableItemBackground"'입니다. – thirtythreeforty

3

ImageButton 당신이 원하는 일을합니까?

오류 메시지는 onClick 처리기와 일치하는 활동에 메서드가 없음을 의미합니다.

클릭 처리 구현으로 귀하의 활동에 clickImage(View view)과 같은 것이 있어야합니다.

+0

clickImage (보기보기)로 시도했지만 작동하지 않습니다. OnClickListner가 원인입니다. 이미지 버튼이 투명하고 이미지 만 표시 (버튼 없음)하면 사용할 수 있습니다. – user484146

+0

오, 명시 적으로 onCreate에서 클릭 리스너를 설정하는 경우 레이아웃에 onClick 속성이 없어야합니다. –

+0

나는 android : onClick = "clickImage"코드에서 제거하려고했는데 그 결과는 아무 것도 클릭 할 때 전혀 발생하지 않는다. – user484146

0

당신은 이미지가 당신의 XML에 클릭 할 때 "clickImage"를 호출하기 위해 온 클릭 방법을 설정했습니다, 하지만 코드에서 clickImage 메소드를 만들지는 않았습니다. onclick 리스너를 설정하지 않아도됩니다. XML에서 메소드를 구현하기 만하면된다. 다른로서는