2 Stimmen

Android - Problem mit OnClickListener und OnLongClickListener

Ich blase zuerst ein Layout auf und füge später eine Ansicht hinzu, indem ich addView() verwende. Das Layout hat einen OnLongClickListener angehängt.

Wenn ich jetzt einen OnClickListener zur inneren Ansicht hinzufüge, wird der OnLongClickListener nicht mehr ausgelöst. Wie kann ich das beheben?

Beispielcode:

View someLayout =  getLayoutInflater().inflate(R.layout.some_layout, null);
someLayout.setOnLongClickListener(new OnLongClickListener() {

    @Override
    public boolean onLongClick(View arg0) {
            ...
        return true;
        }
});

TextView innerView = new TextView(this);

innerView.setText("JustSomeTextThatDoesNotMatter");
innerView.setOnClickListener(new OnClickListener() {    
    @Override
        public void onClick(View arg0) {
            ...
    );
}
});

((FrameLayout) view.findViewById(R.id.framelayout)).addView(innerView);

Layout

Ideen? Das scheint wirklich seltsam zu sein.

Aktualisierung: Das Gleiche passiert, wenn ich anstelle eines onLongClickListeners einen onTouchListener verwende, der OnClickListener in der inneren Ansicht verbraucht alle Touch-Ereignisse.

Ist das so beabsichtigt? Im Grunde möchte ich die gleiche Funktionalität, die das Contextmenü für eine ListView bietet.

6voto

corsair992 Punkte 3050

Ein anklickbares View verbraucht alle Berührungsereignisse und verhindert, dass sie an den übergeordneten Bereich zurückgegeben werden. Daher ist der einzige Weg, um sich für lange Klicks im gesamten Bereich eines Layouts mit anklickbaren Views anzumelden, auch den Listener für jedes anklickbare View im Layout zu registrieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X