Я использую 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);
}
}));
Предполагается, что первая вкладка выглядит следующим образом:
Однако при первом входе в действие это выглядит так:
Дополнительный контент, который вы видите, находится на других вкладках того же действия.
После того, как я щелкаю другую вкладку и затем возвращаюсь к первой, вывод фиксируется (вот так я получил первый скриншот).Поведение является последовательным и происходит каждый раз, когда я запускаю действие.Я использую Android 2.3.7 (CM7) на HD2, если это актуально.
Большое спасибо за любую помощь!