Implementieren onClick nur für eine TextView Verbindung drawable
Ich muss ein text mit einem drawable auf der linken Seite, und ich möchte ausführen von code, wenn der Benutzer auf/berührt das Bild (nur das Bild, nicht den text), so habe ich ein LinearLayout mit einer TextView und ein Bildansicht das ist anklickbar und führt zu einem onClick-Ereignis. Der XML-parser schlägt vor, mich zu ersetzen, dies mit einem TextView mit einer Verbindung drawable, die ziehen würde, das gleiche mit viel weniger Zeilen XML.. Meine Frage ist "kann ich angeben, ich will Griff ein onClick-Ereignis nur auf das drawable des TextView und nicht auf die TextView selbst? Ich habe einige Lösungen gesehen, die beinhaltet das schreiben von eigenen Erweiterung TextView, aber ich bin nur daran interessiert ist, in der Lage, es zu tun in der layout Ressource, wenn möglich, ansonsten behalte ich die folgenden XML code:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="@string/home_feedback_title"
android:textColor="@android:color/primary_text_dark"
android:textStyle="bold"
android:paddingBottom="4dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/action_feedback"
android:clickable="true"
android:onClick="onClickFeedback"
android:contentDescription="@string/action_feedback_description"/>
</LinearLayout>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie in beide Richtungen gehen. Mit der Verbindung drawable schneller ist, aber da es beabsichtigt war, um eine Optimierung. Es verbraucht weniger ram, da reduzieren Sie die 3 Ansichten, die in 1 und es ist schneller layout, denn Sie verlieren 1 Tiefe.
Wenn ich Sie wäre würde ich überlegen, einen Schritt zurück, um zu sehen, wenn sowohl der text und das Bild fängt den touch zu tun, was Aktion ist möglicherweise eine gute Sache. Im Allgemeinen mit einem größeren touch-region macht es einfacher zu drücken. Einige Benutzer möglicherweise tatsächlich dazu neigen, sich zu berühren, wird der text statt des Bildes.
Schließlich, wenn Sie gehen diesen Weg der Zusammenlegung der 2 möchten Sie vielleicht zu prüfen, mit einem
Button
statt einerTextView
. Sie können den Stil der Taste, nicht das Rechteck um ihn herum. Sie nennen es eine randlose Schaltfläche. Es ist nett, weil Sie erhalten ein visuelles feedback, das Sie geklickt haben auf eine umsetzbare Element, wo, wie einImageView
oderTextView
normalerweise nicht verwertbar.Wie Erstellen Sie Randlose Schaltflächen in Android
Seine sehr einfach. Können sagen, Sie haben ein drawable auf der linken Seite Ihres TextView 'txtview'. Folgendes wird den trick tun.
Wenn Sie möchten, für rechts-drawable ändern Sie die if-Anweisung:
Ebenso können Sie es für alle zusammengesetzte drawables.
Der Aufruf dieser Methode gibt alle die Polsterung auf dieser Seite, darunter alle drawables. Sie können diese auch für TextView, Button etc.
Klicken Sie auf hier für den Bezug von android-Entwickler-Website.
@Vishnuvathsan die Antwort ist fast perfekt, aber
getRaw()
gibt die absolute x-position des touch-point. Wenn die textview liegt nicht am linken Rand der Ansicht, Sie sollten vergleichen Sie mit der absoluten position des textview mithilfegetLocationOnScreen
. Code unten ist ein Beispiel um zu überprüfen, sowohl Links als drawable Tippen und rechts drawable Tippen.Diese " click-listener wird immer in auf touch-listener