Вопрос

Как сделать изображение кликабельным? Я попробовал некоторые способы, но без успеха. Вот последний код, который я попробовал (он кликабель, но получает ошибку):

    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();
}
Это было полезно?

Решение

Как сказал другие: сделай это 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 This Way экономит вам много печати, а также предотвращает необходимость анонимных внутренних классов, что полезно для следа памяти.

Другие советы

Делает Imagebutton делай что хочешь?

Сообщение об ошибке, которое вы получаете, подразумевает, что у вас нет метода в вашей деятельности, который соответствует вашему обработчику OnClick.

У тебя должно быть что -то вроде clickImage(View view) В вашей деятельности с реализацией обработки кликов.

Вы можете просто использовать класс ImageButton ...http://developer.android.com/reference/android/widget/imagebutton.html

Использовать Imagebutton ;)

Вы установили метод OnClick для вызова «ClickImage», когда изображение нажимается в вашем XML, но вы не создали метод ClickImage в своем коде. Вам вообще не нужно устанавливать слушателя Onclick. Просто реализуйте метод из вашего XML, и вы должны быть установлены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top