2010-10-04 5 views
0

J'essaie de désactiver un TextView dans un ViewFlipper via setVisibility à GONE et je n'arrive pas à le faire agir comme je le souhaite. Mon code:setVisibility ne fonctionne pas dans ViewFlipper

switch(index) {   
    case 0: 
     //Do Stuff 
    findViewById(R.id.o2).setVisibility(8); 
    findViewById(R.id.o3).setVisibility(8); 
    break; 
    case 1: 
     //Do Stuff 
    findViewById(R.id.o3).setVisibility(8);   
    break; 
    case 2: 
     //Do Stuff 
    break; 
    } 

mon XML

<ViewFlipper android:id="@+id/oFlipper" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:flipInterval="1000" 
    android:inAnimation="@anim/push_up_in" 
    android:outAnimation="@anim/push_up_out"> 
     <TextView android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:textSize="26sp" 
     android:text="Opponents:"/> 
     <TextView android:id="@+id/o1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:textSize="26sp" 
     android:visibility="gone"/> 
     <TextView android:id="@+id/o2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:textSize="26sp" 
     android:text="2"/> 
     <TextView android:id="@+id/o3" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" 
      android:textSize="26sp" 
      android:text="3"/> 
</ViewFlipper> 

J'ai essayé le code avant et après .startFlipping() en vain. Il semble que le TextView est parti pour un retournement de vue puis réapparaît. Mais même lorsque codé en dur dans GONE dans le fichier XML, la vue est simplement vide au lieu de déplacer les autres vues à sa place. Je veux simplement que le TextView disparaisse complètement. Y a-t-il un moyen d'accomplir cela?

+0

définir le ViewFlipper réel d'être parti? Je ne suis pas sûr de comprendre la question. Vous pouvez également utiliser un listeur onAnimationFinished (ou quelque chose comme ça, j'oublie le nom réel), puis définir votre vue pour être parti sur ce rappel. – schwiz

+0

J'ai essentiellement un ViewFlipper de trois textes différents. Selon le cas choisi par l'utilisateur. Je veux qu'un ou plusieurs de ces textes disparaissent et ne soient pas affichés. Cependant, l'attribut "gone" laisse toujours un espace vide dans ViewFlipper. – honeal

Répondre

2

J'ai eu le même problème. L'utilisation de INVISIBLE est meilleure que GONE la vue n'est pas affichée mais elle prend encore un intervalle de temps par ex. vous obtenez la vue précédente deux fois plus longtemps que vous le devriez.

J'ai des choses qui fonctionnent comme je le souhaite en ajoutant et en supprimant les vues enfants de ViewFlipper. Dans le code où je mettais chaque sous-vue à GONE ou VISIBLE (dans onResume) je les enlève maintenant tous du flipper avec .removeAllViews() alors si je les mettais à visable je les rajoute avec .addView (mView) ; Il semble même faire la bonne chose lorsque le ViewFlipper est vide.