2016-03-09 13 views
7

Używam pływającego przycisku akcji (FAB) w mojej aplikacji do wyświetlania Dialogów, wszystko działa dobrze, gdy testowałem swoją aplikację na Xperii Z z Lopllipop 5.1.1.
Problem jednak występuje, gdy testowałem moją aplikację w ASUS Zenfone 6 z KitKat 4.4.2 oraz w Xperii C z Jelly Bean 4.2.2, FAB ładuje się idealnie, ale FAB nie pokazuje okien dialogowych, wygląda na to, że nie odpowiada kiedy go dotknąłem.
Dla mojej rejestracji min. Wersja sdk to 16.Floating Action Button nie odpowiada po kliknięciu/dotknięciu

Chcę tylko zapytać, dlaczego tak się dzieje? Czy coś jest nie tak z moim kodem, a może z wersją Androida lub API?

Proszę spojrzeć na mój kod. Oto kod XML:

android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@drawable/ic_add_account" 
    android:visibility="invisible" 
    android:clickable="true"/> 

a tu jak Oświadczam i ustawić detektor FAB:

FloatingActionButton fab; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

    fab = (FloatingActionButton) getActivity().findViewById(R.id.fab); 

    ... 
    fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       showDialog(); 
      } 
    }); 
    ... 
} 

Rzeczą, która mnie mylony jest jak jest ona pracowała w Xperia Z, ale to nie robi pracował w ASUS Zenfone 6?

+1

Okazuje się, że problem jest w pliku XML Oświadczam fab przed ListView, by usunąć deklarację FAB po pogrupowanych to rozwiązać mój problem. –

+0

Naprawdę należy dodać powyższy komentarz jako odpowiedź na własne pytanie, ponieważ tak naprawdę jest rozwiązaniem tego problemu. Miałem ten sam problem, w moim przypadku był to RecyclerView, następnie FAB, a następnie NestedScrollView. Przeniesiono FAB poniżej NestedScrollView i zdarzenia dotykowe/kliknięcia zaczęły działać. Dobra decyzja. –

+0

@Andrew Chciałbym umieścić mój komentarz jako odpowiedź i umieścić znak SOLVED na moje pytanie, ale tak naprawdę nie mam pojęcia, jak to zrobić. tak smutno ... –

Odpowiedz

12

Problem polega na tym, że zadeklarowałem FAB przed deklaracją listView. Jakoś poprzez przeniesienie deklaracji FAB po deklaracji listView rozwiąże problem.
Od:

<android.support.design.widget.FloatingActionButton 
    ... 
    ... 
    .../> 
<ListView 
    ... 
    ... 
    .../> 

Do:

<ListView 
    ... 
    ... 
    .../> 
<android.support.design.widget.FloatingActionButton 
    ... 
    ... 
    .../> 

Tylko takie proste.

6

Programowo przynosząc fab do przodu powinny również działać:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
fab.bringToFront(); 
fab.setOnClickListener... //etc 
+0

pracował dla mnie, dziękuję !! –