setVisibility не работает в ViewFlipper - PullRequest
0 голосов
/ 04 октября 2010

Я пытаюсь отключить TextView внутри ViewFlipper через setVisibility для GONE и не могу заставить его работать так, как я хочу Мой код:

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;
    }

мой 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>

Я пробовал код до и после .startFlipping () безрезультатно. Похоже, что TextView пропал один раз, а затем снова появляется. Но даже когда он жестко запрограммирован на GONE в XML-файле, представление просто пустое, а не сдвигает другие представления на свое место. Я просто хочу, чтобы TextView полностью исчез. Есть ли способ сделать это?

1 Ответ

2 голосов
/ 02 октября 2011

У меня была такая же проблема.Использование INVISIBLE лучше, чем GONE, вид не отображается, но он все еще занимает временной интервал, например, вы получаете предыдущий вид вдвое дольше, чем нужно.

У меня все работает так, как яхотите, добавив и удалив дочерние представления из ViewFlipper.В коде, где я устанавливал для каждого вложенного представления значение GONE или VISIBLE (в onResume), теперь я удаляю их все из флиппера с помощью .removeAllViews (), а затем, если я устанавливаю их в видимые, я добавляю их обратно в.addView (MView);Он даже выглядит правильно, когда ViewFlipper пуст.

...