Ich verwende SeekBar
in meiner Android App. Wenn ein Benutzer irgendwo auf SeekBar
tippt, wird sein Fortschrittswert geändert. Ich möchte nur, dass sich der Fortschrittswert ändert, wenn der Benutzer den SeekBar
thumb (genau wie ein UISlider
in iOS) verschiebt.
Ich habe versucht, die Eigenschaft clickable
von SeekBar
auf false zu setzen, aber das hat nicht funktioniert. Wie kann ich das gewünschte Verhalten erreichen?
Sieh dir diesen anderen Thread an:
Benutzer kann nicht mit der Seekbar interagieren
Ich habe Folgendes versucht und es funktioniert gut. Beachten Sie, dass meine Suchleiste die Eigenschaft android: max auf 100 gesetzt hat:
%Vor% %Vor%Ich habe mir eine Lösung ausgedacht, es ist nicht sehr hübsch, aber es sollte den Trick machen ...
Hier ist die Idee:
Erstellen Sie ein unsichtbares Overlay, das den gesamten Schieberegler mit Ausnahme der Daumentaste abdeckt
(Ich benutzte eine geschwärzte Suchleiste, um als Überlagerung zu fungieren)
Wenn der Daumen gedrückt wird, rufen Sie die bringToFront-Methode auf dem Schieberegler
Hinweis: Damit dies funktioniert, müssen Sie die Größe der Überlagerung so ändern, dass sie alles außer dem Daumen-Knopf bedeckt (ich empfehle zwei Überlagerungen [eine für jede Seite der Daumenknopf])
Wenn Sie den Daumen loslassen, sollten Sie die Größe der Overlays ändern
... wie ich schon sagte, es ist nicht schön. Ich bin mir sicher, es gibt viel bessere Möglichkeiten, es zu tun, aber wenn Sie es getan haben müssen, würde ich das versuchen.
%Vor%Sie können den Fortschritt vergleichen, wenn Sie die Verfolgung stoppen.
Blick auf @lordmegamax Code, fand ich etwas, das nicht funktioniert.
Ich habe ein wenig nachgedacht und eine Lösung gefunden.
%Vor%Ich hoffe, es hilft. Mit freundlichen Grüßen
PS: Dies ist mein erster Beitrag, tut mir leid, wenn ich etwas falsch gemacht habe.
Mit diesem Code können Sie den Daumen zum Verschieben nach Benutzer deaktivieren
%Vor%wobei "time" eine Ganzzahlvariable ist und den Fortschritt festhält
%Vor%Eine weitere Option, die ich noch nicht vorgeschlagen habe: eine Unterklasse, die empfangene Bewegungsereignisse übersetzt, damit jede Geste in der Mitte des Daumens beginnt. Dies hat folgende Auswirkungen auf das zugrunde liegende Suchleistenverhalten:
Touch location wird gezeigt, um das beschriebene Verhalten zu veranschaulichen.
Tags und Links android android-seekbar android-touch-event