我知道如何在每个选项卡上放置图标,这没问题。我也遇到了这个问题:
[关于相同问题的堆栈溢出线程] [1]

我遵循了该问题的链接之一,并发现了[this] [2]

确实,它说使用XML中定义的选择器确实可以做到这一点。但是没有与它关联的id,所以我不确定如何将选择器功能作为可绘制对象使用,因此我可以将其用作选项卡的图标。也许我正在以错误的方式来解决这个问题。但这就是我所拥有的,显然缺少一些东西。

<selector
    android:id="@+id/myselector"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Non focused states -->
    <item
        android:state_focused="false"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/darklogo" />
    <item
        android:state_focused="false"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/lightlogo" />

    <!-- Focused states -->
    <item
        android:state_focused="true"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/lightlogo" />
    <item
        android:state_focused="true"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/lightlogo" />

    <!-- Pressed -->
    <item
        android:state_pressed="true"
        android:drawable="@drawable/lightlogo" />
</selector>

在我的代码中,示例标签是使用生成的:
  host.addTab(host.newTabSpec("three")
                .setIndicator("map",drawables)
                .setContent(new Intent(this, Map.class)));

现在drawable只是对可绘制图像资源的引用。如何使选择器成为可绘制的?

这是我的问题[1]:Updating Android Tab Icons [2]:http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385

最佳答案

您在此处包含的XML是一种定义可绘制的方法,可让您嵌入case语句。根据要分配给它的View的状态,它呈现不同的可绘制对象。作为可绘制对象,应将其另存为项目的res/drawable文件夹中的xml文件(例如tabselector.xml)。

要将其用于Tabhost,需要像往常一样构造TabActivity(如tutorial example所示)。

然后,当您将每个选项卡添加到主机时,指定tabselector drawable作为指示符,如下面的“TAB 1”所示。

Drawable mySelector = getResources().getDrawable(R.drawable.tabselector);

mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1", mySelector).setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2));

注意:目前,您无法更改图标后面的选项卡背景的颜色。

10-07 19:13
查看更多