Подтвердить что ты не робот

Вызов setContentView() несколько раз

Есть ли способ вызвать setContentView(id) несколько раз с разными id течение одного действия, чтобы отобразить разные представления, или мне абсолютно необходимо начать новое действие?

4b9b3361

Ответ 1

В комментарии Aust Austyn мне удалось найти некоторые рекомендации о том, как использовать ViewFlipper, чтобы выполнить это в другом сообщении (см. вышеописанный верхний ответ здесь.)

Если вы не хотите использовать ViewFlipper, я нашел хороший пример того, как переключаться между макетами в том же представлении здесь:

XML:

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <ImageView 
        android:src="@drawable/icon"
        android:scaleType="fitCenter"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"/>
    <TextView
        android:text="Learn-Android.com"
        android:textSize="24sp"
        android:textColor="#000000"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:gravity="center"/>
</FrameLayout>

код:

private void SwitchLayout2() {
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1);
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2);

// Enable Layout 2 and Disable Layout 1
Layout1 .setVisibility(View.GONE);
Layout2.setVisibility(View.VISIBLE);
}

private void SwitchLayout1() {
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1);
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2);

// Enable Layout 1 & Disable Layout2
Layout1.setVisibility(View.VISIBLE);
Layout2.setVisibility(View.GONE);
}

Ответ 2

Нет, вы не можете называть это несколько раз легко. Вам необходимо полностью удалить все виды, а затем раздуть новый макет или использовать ViewFlipper (или FrameLayout) для переключения между различными видами.

С одной стороны, этот вопрос задавали раньше, хотя я не мог сразу его найти.

Ответ 3

Вы можете попробовать это из своей деятельности:

getWindow().addContentView(View, ViewGroup.LayoutParams);

Два вида содержимого будут один поверх другого. Но нет прямого способа удалить определенное представление, добавленное таким образом.

Также обратите внимание, что вызов setContentView после последнего вызова удалит все предыдущие добавленные виды контента.