Кликабельное изображение - Android - PullRequest
15 голосов
/ 24 января 2011

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

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

Ответы [ 5 ]

25 голосов
/ 24 января 2011

Как уже было сказано: сделайте это 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().Этот метод должен быть объявлен в классе, который устанавливает Layout с ImageButton в качестве своего макета содержимого.

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

Определение обработчика OnClick таким образом экономит вам много времени на ввод текста и предотвращаетанонимные внутренние классы, что полезно для памяти.

3 голосов
/ 24 января 2011

ImageButton делает то, что вы хотите?

Полученное вами сообщение об ошибке означает, что в вашей деятельности нет метода, соответствующего вашему обработчику onClick.

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

1 голос
/ 24 января 2011

Используйте ImageButton ;)

1 голос
/ 24 января 2011

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

0 голосов
/ 24 января 2011

Вы установили метод onclick для вызова clickImage, когда изображение щелкается в вашем XML, но вы не создали метод clickImage в своем коде. Вам вообще не нужно устанавливать прослушиватель onclick. Просто реализуйте метод из вашего XML, и вы должны быть установлены.

...