2015-06-01 9 views
5

Mam prosty układ, widok listy i dwie ikony do filtrowania i sortowania. Kiedy klikam jedną z dwóch opcji, mam układ umieszczony nad listview i pokrywa tylko 60% ekranu, przez co widok listy poniżej jest częściowo widoczny. Co chcę osiągnąć, to wyłączyć przewijanie dla tego listview, żaden element listview nie powinien być klikalny, o ile nakładka jest widoczna.Android wyłącz przewijanie i kliknij, aby wyświetlić listę

Próbowałem za pomocą

setEnabled(false) 
setClickable(false) 

na ListView, ale to nie robi żadnej różnicy. Jakie są inne sposoby, aby to osiągnąć.

Odpowiedz

0

Można to wykorzystać do wyłączania Scrollview nadrzędnego

parentview.requestDisallowInterceptTouchEvent (true);

, jeśli nakładka jest widoczna.

+0

, dzięki czemu będzie idealnie. Dzięki –

+0

jeśli tak, to mógłbyś zaakceptować moje ans? – Sivaranjani

0

Aby wyłączyć przewijanie można użyć OnTouchListener()

listView.setOnTouchListener(new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_MOVE) { 
      return true; // Indicates that this has been handled by you and will not be forwarded further. 
     } 
     return false; 
    } 
}); 

LUB

listView.setScrollContainer(false); 

Dla wyłączenie kliknięcie, w Twojej ArrayAdapter przesłonić metodę IsEnabled następująco

@Override 
public boolean isEnabled(int position) { 
    return false; 
} 
+0

co zrobić, jeśli chcę ponownie włączyć funkcję klikalności? –

+0

"return true;" w isEnabled. Możesz użyć wartości logicznej i zwrócić ją w zależności od potrzeb. –

+0

Jeśli się nie mylę, funkcja isEnabled działałaby, gdy początkowo tworzę listę, to jest, kiedy najpierw wczytam listę, rozumiem, że w takim przypadku isEnabled będzie działał w oparciu o dowolny warunek, który zastosuję i ustawi zdolność klikania widoku, ale czy nawet pracować po utworzeniu listview, a następnie po kliknięciu jakiegoś kliknięcia przez użytkownika chciałbym zdecydować się na klikalność? Jestem nieco zdezorientowany na tym froncie. –

1

Proponuję, aby nakładka była Będę na całym ekranie. Następnie można zawinąć nakładkę z (pionowym) układem liniowym za pomocą odważników (aby uzyskać stosunek 60%/40%). W układzie liniowym umieść bieżącą nakładkę jako pierwsze dziecko, a jako drugie dziecko umieść przezroczysty widok, który blokuje zdarzenia dotykowe. W ten sposób nie będziesz musiał modyfikować widoku listy.

+0

Dlaczego nie sprawić, aby opcja filtru była kontenerem elementu potomnego nakładki (konieczne będzie utworzenie układu względnego/ramkowego nakładki). Czy próbowałeś tego, co zasugerowałem? –

+0

Podjęłam twoją sugestię, ale zamiast używać przezroczystego drugiego dziecka do blokowania zdarzeń dotykowych, moja półprzezroczysta maska ​​nakładki działa dla mnie. –

Powiązane problemy