Android - ViewSwitcher не переключает представления - PullRequest
4 голосов
/ 21 сентября 2010

Это должно быть легко, верно?Итак - вот как я определил ViewSwitcher в XML (идентификаторы и макеты для краткости опущены)

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

Затем где-то в моем коде Java у меня есть этот код

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

не переключается.Я разрабатываю для API v. 3 (1.5+) и, к моему удивлению, ссылок на ViewSwitcher очень мало.Я упускаю что-то очевидное здесь?

PS Я просто методом грубой силы узнал, что это работает:

switcher.setDisplayedChild(1);

Тем не менее - почему не повезло с bringToFront()?

Ответы [ 2 ]

19 голосов
/ 21 сентября 2010

bringToFront() на самом деле не имеет ничего общего с ViewSwitcher, метод наследуется от класса View и обозначает манипулирование z-порядком текущего представления: https://developer.android.com/reference/android/view/View.html#bringToFront()

Вы должны использовать showNext() и showPrevious() методы, унаследованные от ViewAnimator.

15 голосов
/ 26 марта 2013

В ViewSwitcher для навигации между представлениями вы можете использовать методы showPrevious() и showNext()

. Или использовать также для перехода к конкретному представлению методом setDisplayedChild(int index), где индекс может быть либо 0или 1

...