首页 > 解决方案 > 标签图标在滑动时突出显示

问题描述

我在 Android 应用程序中自定义了我的标签,使其具有图标而不是文本。但是,文本标签在选择时会突出显示。我已经通过 OnTabSelectedListener 解决了这个问题,其中设置了一个更亮的图标。但是我仍然不知道如何在从一个页面滑动到另一个页面的一半以上时实现突出显示的原生效果。

有小费吗?提前致谢。

标签: androidtabsswipehighlight

解决方案


而不是使用OnTabSelectedListener,您应该使用根据它们是否被选中而改变自己的图标。

如果您的图标是矢量绘图,那么您可以使用颜色状态列表来自动更改它们的颜色。以下是铅笔图标的外观:

  • res/color/blue_when_selected.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="#0000ff"/>
    <item android:color="#aaaaaa"/>
</selector>
  • res/drawable/ic_pencil.xml
<vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">

    <path
        android:fillColor="@color/blue_when_selected"
        android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25z
        M20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>

</vector>

现在,无论您在何处设置选项卡图标,如果您使用R.drawable.ic_pencil,您将看到自动颜色切换。


如果您的图标是 .png 文件,那么您可以使用State list drawable来实现相同的效果。想象一下你有res/drawable-mdpi/icon_normal.pngres/drawable-mdpi/icon_selected.png。然后你可以有这个:

  • res/drawable/icon.xml
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:state_selected="true"
        android:drawable="@drawable/icon_selected"/>

    <item
        android:drawable="@drawable/icon_normal"/>

</selector>

同样,如果您使用R.drawable.icon.png 文件,您会看到在两个 .png 文件之间自动切换。


推荐阅读