【问题标题】:TabHost do not match is parent width in HoneyComb Android 3.0TabHost 不匹配是 HoneyComb Android 3.0 中的父宽度
【发布时间】:2011-11-17 23:35:57
【问题描述】:

我正在尝试在 HoneyComb 上创建 TabHost,就好像我在 1.6+ 上一样,但事实是当我复制代码时(对于 HoneyComb 和以前的版本相同),TabHost 与屏幕宽度不匹配.没看懂?

通过模拟器在 API 3.0 上使用 Halo 主题。

这是xml:

<?xml version="1.0" encoding="utf-8"?>
<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">

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp" />

</TabHost>

这是我的活动:

package org.agetac;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;

public class TabsActivity extends TabActivity {

    private static final String TAB_SITAC = "tab_sitac";
    private static final String TAB_SOEI = "tab_soei";
    private static final String TAB_MOYEN = "tab_moyen";
    private static final String TAB_TAB4 = "tab_tab4";
    private static final String TAB_TAB5 = "tab_tab5";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabs);

        TabHost tHost = getTabHost();
        TabHost.TabSpec spec;
        Intent tabIntent;


        // Initialize a TabSpec for each tab and add it to the TabHost
        tabIntent = new Intent().setClass(this, SITACActivity.class);
        spec = tHost.newTabSpec(TAB_SITAC).setIndicator(getString(R.string.sitac),
                          getResources().getDrawable(R.drawable.ic_tab_sitac))
                      .setContent(tabIntent);
        tHost.addTab(spec);

        tabIntent = new Intent().setClass(this, SOEIActivity.class);
        spec = tHost.newTabSpec(TAB_SOEI).setIndicator(getString(R.string.soei),
                getResources().getDrawable(R.drawable.ic_tab_soei))
            .setContent(tabIntent);
        tHost.addTab(spec);

        tabIntent = new Intent().setClass(this, MoyenActivity.class);
        spec = tHost.newTabSpec(TAB_MOYEN).setIndicator(getString(R.string.moyen),
                getResources().getDrawable(R.drawable.ic_tab_moyen))
            .setContent(tabIntent);
        tHost.addTab(spec);

        tabIntent = new Intent().setClass(this, Tab4Activity.class);
        spec = tHost.newTabSpec(TAB_TAB4).setIndicator(getString(R.string.tab4),
                getResources().getDrawable(R.drawable.ic_tab_tab4))
            .setContent(tabIntent);
        tHost.addTab(spec);

        tabIntent = new Intent().setClass(this, Tab5Activity.class);
        spec = tHost.newTabSpec(TAB_TAB5).setIndicator(getString(R.string.tab5),
                getResources().getDrawable(R.drawable.ic_tab_tab5))
            .setContent(tabIntent);
        tHost.addTab(spec);

        tHost.setCurrentTab(0);
    }
}

有谁知道为什么 TabHost 对 HoneyComb 的行为如此?

【问题讨论】:

  • 这就是我在平板模拟器上得到的Screenshot

标签: android android-3.0-honeycomb android-tabhost fill-parent


【解决方案1】:

这是正常行为以及 Google 的计划。除非您编写自己的 TabHost,否则选项卡不会填满整个 Activity。

【讨论】: