2012-01-15 15 views
7

Chcę zablokować przeciąganie paska wyszukiwania, jeśli wartość jest prawdziwa. Czy to możliwe? Używam paska wyszukiwania jako przełącznika. Jeśli moja wartość dla paska wyszukiwania wynosi 0, a przycisk A uruchamia się. Jeśli moja wartość dla paska wyszukiwania wynosi 1 i naciśnięto przycisk, rozpoczyna się działanie B.
Chcę temu zapobiec Jeśli akcja A lub B jest uruchomiona, pasek wyszukiwania zostanie przeciągnięty do innej pozycji.

Jak mogę to osiągnąć?Pasek wyszukiwania Android blokuje przeciąganie/blokowanie go przez krótki czas

Odpowiedz

42

Powinieneś ustawić swój własnyTouchListener i po prostu zwrócić true.

seekBar.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       return true; 
      } 
     }); 
+0

setEnabled (false) w rzeczywistości powoduje rozmycie paska wyszukiwania jako całości. Jeśli chcemy po prostu wyłączyć dotyk, jest to idealne rozwiązanie. – raksja

+0

To jest najlepszy .. – Neela

+0

dziękuję bardzo. – Atula

6

Czy próbowałeś wyłączyć wyświetlanie widoku?

Ref: http://developer.android.com/reference/android/view/View.html#setEnabled(boolean)

Aktualizacja:

https://stackoverflow.com/a/3278616/529691

Idealnie nie powinno się tego robić, jak to się dzieje, aby zmylić użytkownika. Moja sugestia to ponowne przemyślenie twojego podejścia.

+1

To oznacza, że ​​widok zniknął, to nie jest to, co chcę. – Leandros

+0

Niepoprawnie. NIE powoduje usunięcia widoku, uniemożliwia interakcję widoku z użytkownikiem. Przeczytaj swoją dokumentację. – JoxTraex

+0

Ah, Ok. Czy to przetestuje. Dzięki! – Leandros

0

Ustaw poziom jedna klasa zmienna

private boolean blockSeekBar = false; 

potem ustawić blockSeekBar zmienną jak na swoje wymagania i używać w aplikacji.

seekBar.setOnTouchListener(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      return blockSeekbar; 
     } 
    }); 

setEnabled(true/false) również wybór, ale tam zobaczyć nie wykazuje dobre, więc to dlaczego powyższy kod jest doskonale działa.

+0

Nie rozumiem. Dlaczego "setEnabled()" nie jest dobrą opcją? Dla mnie działa dobrze. –

+0

po ustawieniu setEnabled (true/false), widok pokazuje pewne rozmycie, oznacza to, że jest bezpośrednio wyświetlany, a nie klikalny –

Powiązane problemy