2016-03-09 13 views
7

Sto utilizzando un pulsante di azione fluttuante (FAB) nella mia applicazione per mostrare i dialoghi, tutto funziona perfettamente quando ho testato la mia app in Xperia Z con Lopllipop 5.1.1.
Tuttavia, il problema è quando ho testato la mia app in ASUS Zenfone 6 con KitKat 4.4.2 e in Xperia C con Jelly Bean 4.2.2, il FAB è stato caricato perfettamente ma il FAB non mostra i Dialoghi, sembra che non risponda quando l'ho toccato
Per la cronaca, la mia versione min sdk è 16.Il pulsante di azione flottante non risponde quando ha fatto clic/sfiorato

Quello che voglio chiedere è perché questo sta accadendo? C'è qualcosa di sbagliato nel mio codice, o forse con la versione di Android o il livello API?

Si prega di dare un'occhiata al mio codice. Ecco il codice 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"/> 

ed ecco come mi dichiaro e impostare l'ascoltatore per la 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(); 
      } 
    }); 
    ... 
} 

La cosa che mi ha fatto confuso è come viene lavorato in Xperia Z, ma non è così ha lavorato in ASUS Zenfone 6?

+1

scopre che il problema è nel file XML che dichiarare il FAB prima della listview, per rimuovere la dichiarazione di FAB dopo il ListView, ha risolto il mio problema. –

+0

Dovresti davvero aggiungere il commento sopra come risposta alla tua stessa domanda, poiché è davvero la soluzione a questo problema. Ho avuto lo stesso problema, nel mio caso era un RecyclerView, poi il FAB, quindi un NestedScrollView. Spostato il FAB sotto il NestedScrollView e gli eventi touch/click hanno iniziato a funzionare. Buona chiamata –

+0

@Andrew Desidero inserire il mio commento come risposta e inserire il marchio SOLVED nella mia domanda, ma in realtà non ho la minima idea di come farlo. così triste ... –

risposta

12

Il problema qui è che ho dichiarato il FAB prima della dichiarazione di listView. In qualche modo trasferendo la dichiarazione di FAB dopo la dichiarazione di listView, il problema sarà risolto.
Da:

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

A:

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

Proprio così semplice come sembra.

6

programmazione portando il FAB a quella anteriore dovrebbe funzionare anche:

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

ha funzionato per me, grazie !! –

Problemi correlati