TabView混合来自多个标签的内容

时间:2011-10-15 13:16:27

标签: android android-layout

我正在使用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

您看到的其他内容来自同一活动中的其他标签。

点击另一个标签然后返回第一个标签后,输出就固定了(这就是我获得第一个屏幕截图的方式)。行为是一致的,每次我启动活动时都会发生。如果相关,我在HD2上使用Android 2.3.7(CM7)。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我有这个问题。我必须为每个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>

答案 1 :(得分:0)

经过几个小时摆弄这个,我找到了解决办法:默认情况下,使每个标签的LinearLayouts不可见。

换句话说:

android:visibility="gone"
每个LinearLayout

相关问题