Кликаемое изображение - андроид
Как сделать изображение кликабельным? Я пробовал несколько способов, но безуспешно.
Здесь последний код, который я пробовал (он кликабелен, но получает ошибку):
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: ERROR/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();
}
Ответы
Ответ 1
Как и другие: сделайте это 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 таким образом экономит много ввода, а также предотвращает необходимость анонимных внутренних классов, что полезно для области памяти.
Ответ 2
Делает ли ImageButton то, что вы хотите?
Полученное сообщение об ошибке подразумевает, что у вас нет метода в вашей деятельности, который соответствует вашему обработчику onClick.
У вас должно быть что-то вроде clickImage(View view)
в вашей деятельности с реализацией обработки кликов.
Ответ 3
Вы можете просто использовать класс ImageButton...
http://developer.android.com/reference/android/widget/ImageButton.html
Ответ 4
Используйте ImageButton;)
Ответ 5
Вы установили метод onclick для вызова "clickImage", когда изображение кликается в вашем XML, но вы не создали метод clickImage в своем коде. Вам не нужно устанавливать прослушиватель onclick вообще. Просто реализуйте метод из вашего XML, и вы должны быть установлены.