我正在使用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);
}
}));
第一个标签看起来像这样:
但是,我第一次进入活动时看起来像这样:
您看到的其他内容来自同一活动中的其他标签。
点击另一个标签然后返回第一个标签后,输出就固定了(这就是我获得第一个屏幕截图的方式)。行为是一致的,每次我启动活动时都会发生。如果相关,我在HD2上使用Android 2.3.7(CM7)。
非常感谢您的帮助!
答案 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 。