2012-03-30 7 views
4

Ich suche nach einer Möglichkeit, die Benutzeroberfläche zu sperren, zum Beispiel, wenn ich "Sperren" aus dem Optionsmenü wählen, wird die Benutzeroberfläche von Berührungen blockiert werden. Es ist eine Art Overlay mit einer Art Sperrsymbol über die Benutzeroberfläche hinzuzufügen. Habt ihr irgendwelche Vorschläge? Vielen Dank!So sperren Sie die Benutzeroberfläche?

Antwort

1

Müssen Sie das bei mehreren Aktivitäten oder nur einer tun? Wenn es nur eins ist, fügen Sie eine transparente ViewGroup (MatchParent, Parent) zum Anfang Ihrer Ansichtshierarchie hinzu. Lass es standardmäßig los. Fügen Sie dann in OnCreate() einen OnTouchListener hinzu, der immer true zurückgibt (was bedeutet, dass er die Berührung berücksichtigt hat); Dann, wenn Sie es brauchen, machen Sie es einfach "Sichtbar".

Erläuterung: Wenn Sie es oben einfügen, wird es zur obersten Ebene in der Ansichtshierarchie. Es wird also zuerst Berührungsereignisse erhalten, die Sie dann ablehnen, indem Sie dem Anrufer des Zuhörers treu bleiben.

+0

Danke, Ihre Idee funktioniert super! Es ist nur so, dass ich die oberste ViewGroup nicht transparent machen kann, so dass die darunter liegenden Ansichten noch sichtbar sind. Oder mache ich etwas falsch? Können Sie mir das XML-Layout oder einen Code geben? –

+0

Ok vergiss es, ich habe es :). –

+0

Können Sie teilen, was Ihr Problem war? Jemand anderes könnte eines Tages darauf stoßen. –

4

Um das gesamte Fenster der Aktivität unantastbar zu machen, nennen dies:

this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 

es berührbaren wieder zu machen, rufen

this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 

Obwohl dies eine ANR verursachen kann ... wenn Sie können umgehen, dass dann das ist die einfachste Methode, sonst was Bitbox sagte möglicherweise die passende Lösung

+0

Vielen Dank für Ihren Vorschlag, aber wegen der ANR verwende ich die Bitbox-Lösung. –

Verwandte Themen