标签图标在滑动时突出显示

时间:2018-10-22 16:27:22

标签: android tabs swipe highlight

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

有什么提示吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

您应该使用可以根据自己的选择更改的图标,而不是使用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文件,则可以使用可绘制状态列表来达到相同的效果。假设您有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文件之间自动切换。