2012-05-07 15 views
6

Moje pytanie jest proste: Jak wyłączyć dowolne zdarzenie w widoku na Androida? (w tym usunięcie jego zdolności do ogniskowania, tak jakbym po prostu chciał, aby było tam wizualnie, ale było nieodporne na wszystko inne) I działa na całym drzewie widoku? (jak jeśli wyłączę zdarzenia w katalogu głównym, wszystkie zdarzenia zostaną wyłączone dla swoich dzieci?).Jak wyłączyć dowolne zdarzenie w widoku w systemie Android?

Teraz, zanim powiesz coś Próbowałem wszystkie następujące:

I żadna z tych metod nie wydaje się działać, poważnie.

Próbowałem ich bezpośrednio na WebView, a także na układzie nadrzędnym we wszystkim, ale wciąż jestem w stanie z nim współpracować.

Każdy pomysł?

Dzięki!

EDIT # 1

Rozwiązanie, które polega na dodawaniu widok na góry widoku, który musi być wyłączona, nie działa. Właściwie, to nadal możliwe, aby kliknąć na wewnętrznej widzenia Próbowałem z prostym przykładzie:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:background="#ff0000"> 
     <Button 
      android:id="@+id/button" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="Click Me!" 
     /> 
    </LinearLayout> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#00000000" 
    /> 
</FrameLayout> 

Tutaj to jeszcze możliwe, aby kliknąć na button.

EDIT # 2

Powód dlaczego chcę, aby to zrobić jest związane z following question że poprosiłem tygodnie temu.

To, co mam, to ListView działający jako pasek nawigacyjny pod numerem View, który zawiera treść mojej aplikacji. Problem z tą implementacją polega na tym, że gdy próbuję przewinąć przez ListView, gdy w warstwie na wierzchu znajduje się widok, który można ustawić, dobrze, że ListView nie przewija, a zamiast tego jest to widok z góry, który skupia się na tym (tak jest w przypadku jest Webview lub EditText itp.).

Więc tak jak wspomniano w jednym z odpowiedzi, mogę wyłączyć każde kliknięcie zdarzenia na WebView nadrzędnymi setOnTouchListener ale widok pozostaje skoncentrowany i myślę, że to jest powód, dlaczego ja wciąż ma ten sam problem z moim pasku nawigacyjnym .

Odpowiedz

5

Po prostu umieść widok na górze swojego widoku. Możesz go wyłączyć, ustawiając view.visibility = gone/visible.

<FrameLayout> 
<WebView/> 
<FrameLayout This view will be on top/> 
</FrameLayout> 

Edit: Właśnie stumpled na ten link: https://stackoverflow.com/a/3856199/969325 Zasadniczo wyłącza całą dotykowy zdarzenia na WebView. Próbowałeś tego?

Edytuj 2 reedit: Spróbuj ustawić widoczność, aby zniknęła dla widoku z góry poniżej widoku listy.

+0

Nie chcę, żeby zniknął! Po prostu chcę wyłączyć jakiekolwiek zdarzenie (np. Kliknięcia) na nim ... –

+0

@AmokraneChentir po prostu uczyń to przezroczystym ... android: background = "android: color/transparent" <- jeśli istnieje, w przeciwnym razie stwórz własny przezroczysty kolor – Warpzit

+0

No dobra, nie przeczytałem poprawnie odpowiedzi. Właściwie nawet z innym widokiem, wciąż mogę go przeglądać w widoku wewnętrznym. –

Powiązane problemy