Klickbares Bild - Android
-
24-10-2019 - |
Frage
Wie mache ich ein Bild anklickbar? Ich habe einige Möglichkeiten ausprobiert, aber ohne Erfolg. Hier ist der letzte Code, den ich ausprobiert habe (er ist anklickbar, aber Fehler erhält):
ImageView btnNew = (ImageView) findViewById(R.id.newbutton);
btnNew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do stuff
}
});
Und hier ist der Teil von 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" />
Wenn Sie diesen Code ausführen und auf das Bild klicken, erhalte ich diesen Fehler:
01-24 19: 14: 09.534: Fehler/AndroidRuntime (1461): Java.lang.IillegalstateException: konnte in der Aktivität keine Methode ClickImage (Ansicht) finden
Hier ist die Lösung:
Das 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" />
Der Code :
public void clickNew(View v)
{
Toast.makeText(this, "Show some text on the screen.", Toast.LENGTH_LONG).show();
}
Lösung
Wie andere sagte: Machen Sie dies zu und ein ImageButton
und definieren Sie sein Onclick -Attribut
<ImageButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="left"
android:onClick="scrollToTop"
android:src="@drawable/to_top_button"
/>
Das Bild ist hier in einer Datei res/Drawable/to_top_button.png codiert. Wenn der Benutzer auf die Schaltfläche klickt, die Methode scrollToTop()
wird genannt. Diese Methode muss in der Klasse deklariert werden, die das Layout mit dem festlegt ImageButton
als Inhaltslayout.
public void scrollToTop(View v) {
...
}
Das Definieren des Onclick -Handlers auf diese Weise erspart Ihnen viel Tippen und verhindert auch die Notwendigkeit an anonymen inneren Klassen, was für den Speicherpflichtzdruck vorteilhaft ist.
Andere Tipps
Macht ein Bildbutton Tun Sie, was Sie wollen?
Die Fehlermeldung, die Sie erhalten, impliziert, dass Sie keine Methode in Ihrer Aktivität haben, die Ihrem Onclick -Handler entspricht.
Sie sollten so etwas haben wie clickImage(View view)
in Ihrer Aktivität mit der Implementierung der Klickhandhabung.
Sie könnten einfach die ImageButton -Klasse verwenden ...http://developer.android.com/reference/android/widget/imageButton.html
Verwenden ein Bildbutton ;)
Sie haben die Onclick -Methode festgelegt, um "ClickImage" aufzurufen, wenn das Bild in Ihrem XML geklickt wird. Sie haben jedoch keine ClickImage -Methode in Ihrem Code erstellt. Sie sollten den Onclick -Hörer überhaupt nicht einstellen müssen. Implementieren Sie einfach die Methode aus Ihrem XML und Sie sollten festgelegt werden.