Android - ViewSwitcher ne commute pas vues
-
04-10-2019 - |
Question
Il devrait être facile, non? Alors - voici comment je ViewSwitcher
défini dans XML (Id et de mises en page par souci de concision omis)
<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>
Alors quelque part dans mon code Java j'ai ce code
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
Il est tout simplement pas passer. Je développe l'API v. 3 (1.5+) et à ma grande surprise, il y a très peu de références à ViewSwitcher. Je suis je manque quelque chose évidente ici?
P.S. Je viens de découvrir par la force brute que cela fonctionne:
switcher.setDisplayedChild(1);
Encore - pourquoi pas de chance avec bringToFront()
La solution
bringToFront()
n'a en fait rien à voir avec ViewSwitcher
, la méthode est héritée de la classe View et est synonyme de manipulation z ordre de vue actuel: https://developer.android.com/reference/android/view/View.html#bringToFront ()
Vous devez utiliser des méthodes de showNext()
et showPrevious()
héritées de ViewAnimator
.
Autres conseils
Dans ViewSwitcher
pour naviguer entre les vues que vous pouvez utiliser les méthodes showPrevious()
et showNext()
Ou utilisez peut aussi aller à la vue spécifique par la méthode setDisplayedChild(int index)
où l'indice peut être 0
ou 1