onClick wird bei LinearLayout mit Kind nicht ausgelöst

Lesezeit: 4 Minuten

onClick wird bei LinearLayout mit Kind nicht ausgelost
juli

Ich habe ein benutzerdefiniertes LinearLayout mit einem kleineren TextView-Kind. Ich möchte in der Lage sein, auf den Bereich zu klicken, der nicht von der TextView abgedeckt wird, also setze ich clickable=true und einen onclicklistener auf das LinearLayout, aber onClick wird nicht ausgelöst. Wenn ich den onclick-Listener in der TextView einstelle, funktioniert es wie erwartet …

Kann jemand helfen?

ar_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ar_item" android:layout_width="202dp"
    android:layout_height="62dp" android:background="@drawable/bg_item_ar"
    android:clickable="true">

    <TextView android:id="@+id/ar_item_txt"
        android:layout_width="164dp" android:layout_height="fill_parent"
        android:paddingBottom="8dp" android:paddingLeft="8dp"
        android:paddingTop="8dp" android:paddingRight="6dp" android:gravity="center"
        android:background="#50000000" />

</LinearLayout>

Mein benutzerdefiniertes LinearLayout

public class ARView extends LinearLayout
{    

    public ARView(final Context context, String name, String id)
    {        
        super(context);  
        getLayoutInflater().inflate(R.layout.ar_item, this ,true);
        LayoutInflater inflater = (LayoutInflater)   getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        inflater.inflate(R.layout.ar_item, null);

        TextView textView = (TextView) findViewById(R.id.ar_item_txt);
        textView.setText(name);

        setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {                   
                Toast t = Toast.makeText(context, "hey!", Toast.LENGTH_SHORT);
                t.show();
            }
        });
    }
}

  • Ich habe genau das gleiche Problem, hast du eine Lösung gefunden?

    – Langhaar

    30. August ’11 um 22:29

android:duplicateParentState="true" hat mir nicht geholfen.

Um Ihr Layout mit seinen untergeordneten Elementen anklickbar zu machen, müssen Sie diese Option für alle hinzufügen Kind:

 android:clickable="false"

Dann geht das Klickhandling hoch zu Elternteil.

  • Danke @Yurets, es funktioniert wie von Zauberhand. Das muss eine akzeptable Antwort sein

    – Vishal G. Gohel

    23. Dezember ’17 um 7:39

  • Danke. Hat bei mir auch funktioniert!

    – Yesha

    6. August ’18 um 7:28

  • Ja – hat funktioniert. Mein Problem war, dass meine Kinder Schaltflächen waren (von Natur aus anklickbar), also musste ich sie in ImageViews ändern. Ich weiß nicht, warum ich sie überhaupt als Knöpfe hatte.

    – JCutting8

    3. September ’18 um 19:48

  • Was ist, wenn klickbare untergeordnete Elemente im Layout erforderlich sind?

    – ekashking

    7. Juni ’21 um 4:29

  • dann überspringst du die Einstellung android:clickable="false" für diese Kinder. @ekashking

    – Yurets

    7. Juni ’21 um 6:31

für jedes kind

android:duplicateParentState=”true”

  • Vielen Dank dafür, mein ähnliches Problem gelöst, mehrere Steuerelemente zu haben, die einen visuellen “angeklickten” Zustand ausdrücken möchten, während ich nur das Ereignis im übergeordneten Element behandeln muss.

    – Rollie

    14. Juli ’12 um 6:45

  • Obwohl ich immer noch ein sehr seltsames Problem sehe – wenn ich clickable = true, width/height=wrap/match habe, funktioniert es, aber wenn ich diese in einen Stil füge und diesen Stil verwende, funktioniert es nicht (kein visuelles “geklickt” ‘ Zustand, kein Handler gefeuert). Dies ist am 2.3; eine Idee, warum das passieren könnte?

    – Rollie

    14. Juli ’12 um 6:51

  • Danke dafür! Es wurde ein Problem behoben, das ich heute mit der Auswahl verschachtelter linearer Layouts hatte.

    – mein Code riecht

    21. Juni ’13 um 16:56

  • Trotzdem muss jedes Kind Android:clickable=”false” setzen

    – Vishal G. Gohel

    23. Dez. 17 um 7:42

  • Dies funktioniert nicht immer …. verweisen Sie dies … stackoverflow.com/a/31578111/5886712 … oder wenden Sie sich darunter an das Kind > android:clickable=”false”

    – Tarit Ray

    3. Apr. ’19 um 13:37

onClick wird bei LinearLayout mit Kind nicht ausgelost
Elementstil

Dies ist nicht Ihr Fall, aber ich hatte ein ähnliches Problem mit Clickable ViewGroup. Nach einer Stunde Suche nach einer Lösung habe ich herausgefunden, dass ich eingestellt habe android:inputType zu TextView in meinem ViewGroup was blockierte onClick() Zuhörer (keine Ahnung warum)

Nicht verwenden android:inputType mit TextView

  • Danke schön! Ich konnte nicht herausfinden, warum mein TextView Klicks abfängt.

    – MrPlow

    1. September ’16 um 21:26

  • Dies war auch mein Problem, stellen Sie sicher, dass Sie inputType nicht haben oder auf none gesetzt haben! Danke, dass du das gepostet hast

    – Adam William Larson

    1. Juni ’17 um 22:47

  • Nun, bei mir hat nichts funktioniert, es sei denn, ich bin auf Ihre Antwort gestoßen, es gab einen Eingabetyp für meine Textansicht.

    – Usama Saeed US

    2. Februar ’20 um 9:38

Machen Sie Ihre Eltern zu LinearLayouts android:clickable=”true”

Machen Sie alle Kinderansichten android:clickable=”false”

Unter Linearlayout – Entfernen android:inputType=”” von TextView

Der android:duplicateParentState="true" machte mein Textvorschau scheint deaktiviert zu sein und kann kein Klickereignis empfangen.

Alles, was Sie brauchen, ist die Textvorschau clickable="false". Das Click-Ereignis wird also an das übergeordnete Layout gesendet, und die Textvorschau kann immer noch auf Berührungsereignisse reagieren (mit Welleneffekt).

1641995058 918 onClick wird bei LinearLayout mit Kind nicht ausgelost
Nikola Despotoski

Ihre TextView-Höhe deckt das gesamte übergeordnete Element (das gesamte Layout) ab, sodass Sie möglicherweise auf einen leeren Bereich klicken, jedoch nicht auf das Layout. Versuchen Sie es mit wrap_content für android:layout_height für Ihre TextView. Setzen Sie auch den Klick-Listener für das Layout.

1641995058 367 onClick wird bei LinearLayout mit Kind nicht ausgelost
CDhaber

Sie verwenden Ihre benutzerdefinierte Ansicht nicht; Sie verwenden ein Standard-LinearLayout. Ihr XML-Tag sollte sein:

<com.yourcode.ARView ...> ... </com.yourcode.ARView>

.

452210cookie-checkonClick wird bei LinearLayout mit Kind nicht ausgelöst

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy