setVisibility не работает в ViewFlipper

Я пытаюсь отключить 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 ответ

Решение

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

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

Другие вопросы по тегам