Android - ViewSwitcher non è il passaggio viste
-
04-10-2019 - |
Domanda
Dovrebbe essere facile, giusto? Quindi - ecco come ho ViewSwitcher
definiti in XML (Id e di layout omessi per brevità)
<ViewSwitcher android:layout_height="wrap_content" android:layout_width="fill_parent" >
<!-- First view, comes up OK -->
<LinearLayout android:id="@+id/header1">
<!-- some more controls: Progress bar, test view and the button -->
</LinearLayout>
<!-- second view. changing to the actual (not include) layout has no effect -->
<include android:id="@+id/header2" />
</ViewSwitcher>
Poi, da qualche parte nel mio codice Java ho questo codice
ViewSwitcher switcher = (ViewSwitcher) findViewById(R.id.profileSwitcher);
// more code that basically executes background search
// when call comes back - switch
switcher.bringToFront(); // does nothing
// switcher.bringChildToFront(findViewById(R.id.header2)); // no effect ether
Non è solo il passaggio. I sviluppare per API v. 3 (1.5+) e con mia sorpresa ci sono pochissimi riferimenti a ViewSwitcher. Sto mi manca qualcosa di ovvio qui?
P.S. Ho appena scoperto con la forza bruta che questo funziona:
switcher.setDisplayedChild(1);
Ancora - perché senza fortuna con bringToFront()
Soluzione
bringToFront()
ha in realtà nulla a che fare con ViewSwitcher
, il metodo viene ereditato dalla classe View e si distingue per la manipolazione z-ordine di visualizzazione corrente: https://developer.android.com/reference/android/view/View.html#bringToFront ()
Devi usare showNext()
e showPrevious()
metodi ereditati da ViewAnimator
.
Altri suggerimenti
In ViewSwitcher
per navigare tra le visualizzazioni è possibile utilizzare i metodi showPrevious()
e showNext()
In alternativa l'uso può anche andare alla vista specifica con il metodo setDisplayedChild(int index)
cui indice può essere sia 0
o 1