Android:自定义TabWidget有2个问题

时间:2013-03-11 16:10:43

标签: android tabs android-tabhost tabwidget

我正在尝试在操作栏下创建自定义标签。我的操作栏已被其他小部件占用,因此无法将选项卡移动到操作栏。选项卡需要包含图像和文本。我有两个问题:

1)当我这样做时:

mTabHost.addTab(mTabHost.newTabSpec("Local").setIndicator("Local", getResources().getDrawable(R.drawable.local_selector)).setContent(R.id.local_image));

我看到了文字而没有图片。如果我这样做:

mTabHost.addTab(mTabHost.newTabSpec("Local").setIndicator("", getResources().getDrawable(R.drawable.local_selector)).setContent(R.id.local_image));

我看到图片,但我没有收到所需的文字。

2)文本和图像的背景颜色与TabWidget的颜色不匹配。它匹配整个应用程序的默认背景颜色。

我也尝试在RelativeLayout中创建标签并按照以下方式实现它们:

RelativeLayout localView = (RelativeLayout)inflater.inflate(R.layout.local_tab, null);
mTabHost.addTab(mTabHost.newTabSpec("Local").setIndicator(localView).setContent(R.id.local_image));

这为我提供了具有正确背景颜色的所需图像+文本组合,但标签不再像标签一样。没有分隔线,所选标签不亮。

2 个答案:

答案 0 :(得分:1)

试试这可能对你有所帮助。

tabHost = getTabHost();
    TabSpec spec_info = tabHost.newTabSpec(getString(R.string.info));
    spec_info.setIndicator(getString(R.string.info), null);
    Intent Intent_info = new Intent(this, RestaurantInfoActivity.class);
    spec_info.setContent(Intent_info);
    tabHost.addTab(spec_info);
    tabHost.getTabWidget().getChildTabViewAt(0).setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_selector));

tabHost = getTabHost(); TabSpec spec_info = tabHost.newTabSpec(getString(R.string.info)); spec_info.setIndicator(getString(R.string.info), null); Intent Intent_info = new Intent(this, RestaurantInfoActivity.class); spec_info.setContent(Intent_info); tabHost.addTab(spec_info); tabHost.getTabWidget().getChildTabViewAt(0).setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_selector));

XML

选择

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

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:orientation="vertical" 
                    android:fadingEdge="none"
                    android:overScrollMode="never"
                    >

                    <TabWidget
                        android:id="@android:id/tabs"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:tabStripEnabled="false" />

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

答案 1 :(得分:1)

我找到了解决问题的方法。在我的主题中,我设置android:background而不是android:windowBackground。一旦我使用了android:windowBackground,颜色就会更好地协同工作。

然后我创建了包含文本的新图像。经过大量的调整,我最终让它看起来像我想要的那样。