TabView смешивает содержимое из нескольких вкладок - PullRequest
0 голосов
/ 15 октября 2011

Я использую TabView для макета активности.К сожалению, в первый раз, когда я вхожу в активность, TabView отображает содержимое всех вкладок одновременно, создавая искаженный вывод.

Мой макет использует ImageView для фона и добавляет поверх него TabHost.ScrollView есть, потому что содержимое некоторых вкладок требует прокрутки.Я не использую отдельные действия для каждой вкладки.

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical">

    <ImageView android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:src="@drawable/background_claims"
        android:scaleType="centerCrop" />

    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost" android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <LinearLayout android:orientation="vertical"
            android:layout_width="fill_parent" android:layout_height="fill_parent">
            <TabWidget android:id="@android:id/tabs"
                android:layout_width="fill_parent" android:layout_height="wrap_content" />

            <ScrollView android:layout_width="fill_parent"
                android:layout_height="fill_parent">

                <FrameLayout android:id="@android:id/tabcontent"
                    android:layout_width="fill_parent" android:layout_height="fill_parent">

                    <LinearLayout android:id="@+id/overview_tab"
                        android:orientation="vertical" android:layout_width="fill_parent"
                        android:layout_height="wrap_content">
                    </LinearLayout>

                    <LinearLayout android:id="@+id/journey_tab"
                        android:orientation="vertical" android:layout_width="fill_parent"
                        android:layout_height="fill_parent">
                    </LinearLayout>

                    <LinearLayout android:id="@+id/delay_tab"
                        android:orientation="vertical" android:layout_width="fill_parent"
                        android:layout_height="fill_parent">
                    </LinearLayout>

                    <LinearLayout android:id="@+id/personal_tab"
                        android:orientation="vertical" android:layout_width="fill_parent"
                        android:layout_height="fill_parent">
                    </LinearLayout>

                    <LinearLayout android:id="@+id/ticket_tab"
                        android:orientation="vertical" android:layout_width="fill_parent"
                        android:layout_height="fill_parent">
                    </LinearLayout>

                </FrameLayout>
            </ScrollView>
        </LinearLayout>
    </TabHost>

</FrameLayout>

... где я опускаю содержимое LinearLayouts для краткости.

LinearLayouts добавляются в качестве вкладок в конструкторе Activity:

    tabHost = getTabHost();
    tabHost.setOnTabChangedListener(this);

    tabHost.addTab(tabHost.newTabSpec(LIST1_TAB_TAG)
            .setIndicator(LIST1_TAB_TAG)
            .setContent(new TabContentFactory() {
                public View createTabContent(String arg0) {
                    return (LinearLayout) findViewById(R.id.overview_tab);
                }
            }));

Предполагается, что первая вкладка выглядит следующим образом: Normal First Tabs

Однако при первом входе в действие это выглядит так: Corrupted tab

Дополнительный контент, который вы видите, находится на других вкладках того же действия.

После того, как я щелкаю другую вкладку и затем возвращаюсь к первой, вывод фиксируется (вот так я получил первый скриншот).Поведение является последовательным и происходит каждый раз, когда я запускаю действие.Я использую Android 2.3.7 (CM7) на HD2, если это актуально.

Большое спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 15 октября 2011

После нескольких часов работы с этим я нашел решение: сделать LinearLayouts каждой вкладки по умолчанию невидимыми.

Другими словами:

android:visibility="gone"

для каждого LinearLayout.

0 голосов
/ 15 октября 2011

У меня была эта проблема.Я должен был определить белый фон для каждого из моих LinearLayouts.

android:background="@drawable/border02"

и определить вашу границу:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" android:layout_width="wrap_content">
            <stroke android:width="0.5dp" android:color="#FF000000" />
            <solid android:color="#FFFFFFFF" />
            <padding android:left="0dp" android:top="0dp" android:right="0dp"
                android:bottom="0dp" />
            <corners android:radius="0dp" />
        </shape>
    </item>


</layer-list>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...