android - 在 Android 中自定义状态选项卡

标签 android tabs selector drawable

我知道如何将图标放在每个选项卡上,这没问题。我也遇到了这个: [堆栈溢出线程几乎相同][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 可绘制作为指示器,如下面的“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));

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

关于android - 在 Android 中自定义状态选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/773690/

相关文章:

java - 优化过滤算法

java - 找不到类,尝试使用 Play 商店制作多人游戏时解码错误

jquery - 从一个链接显示具有相同 ID 的两个 div 的内容

Android:两个 Activity ,一个选项卡

jquery-ui - jQuery 选项卡 - 仅在单击时加载内容

java - 团结| Android - 无法签署 APK 包 : Unsupported major. 次要版本 52.0

android - 图层列表忽略 <size> 标签

安卓按钮选择器

android - 如何使用选择器更改 ImageButton 图像?

javascript - jQuery 旋转函数 Img 选择