У вас могут быть ваши макеты в одном файле xml. Те, которые вы не хотите видеть сразу, установите android:visibility="gone"
в XML, и во время выполнения вы сделаете звонок до hiddenView.setVisibility(View.VISIBLE);
.
Ваш XML будет выглядеть примерно так:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
<LinearLayout android:id="@+id/layout2"
android:visibility="gone"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
</RelativeLayout>
во время выполнения вы можете сделать:
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
Это по существу создать внешний вид свопинга макетов.
Я считаю, что это также сработает, если у вас есть общие объекты между двумя макетами. Просто убедитесь, что вы сначала установили идентификатор, используя android:id="@+id/view1"
, и каждый последующий параметр этого идентификатора вы бы сделали android:id="@id/view1"
(без +).
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:id="@+id/layout1"
android:layout_width="fill_parent">
<View android:id="@+id/view1"/>
</LinearLayout>
<LinearLayout android:id="@+id/layout2"
android:visibility="gone"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<View android:id="@id/view1"/>
</LinearLayout>
</RelativeLayout>
Мне очень нравится этот ответ. Я лично использую ViewFlipper для управления несколькими макетами, поэтому мне не нужно управлять переменными [Resource], входящими в область действия и из-за того, что их макет установлен в виде содержимого. Оба подхода являются жизнеспособными. –
А, у меня нет опыта работы с классом ViewFlipper. Я должен проверить это в следующий раз, когда мне нужно сделать что-то подобное. – SSZero
О, ничего себе не сработало: D Спасибо! – justinl