0

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

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));

这为我提供了具有正确背景颜色的所需图像+文本组合,但选项卡不再看起来像选项卡。没有分隔线,选定的选项卡不会亮起。

4

2 回答 2

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));

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>

选择器

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, use white-->
<item android:drawable="@drawable/active_tab"
      android:state_selected="true" />
<!-- When not selected, use grey -->
<item android:drawable="@drawable/in_active_tab" >
</item>

于 2013-03-12T04:24:51.630 回答
1

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

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

于 2013-03-13T16:53:29.663 回答