如何在为拇指使用自定义绘图时保持切换拇指阴影/高度?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在为拇指使用自定义绘图时保持切换拇指阴影/高度?相关的知识,希望对你有一定的参考价值。

我需要用我自己的drawable重新设置默认的Switch拇指。为此,我使用了android:thumb属性,它可以很好地减去拇指下的阴影不再存在。如何在保持拇指阴影/高度的同时使用我的自定义拇指抽屉?

这是我实施的风格:

<style name="TiimeGreenSwitch" parent="Widget.AppCompat.CompoundButton.Switch">
    <item name="android:thumb">@drawable/switch_green_thumb</item>
    <item name="trackTint">@color/switch_green_track</item>
</style>

drawable是这个选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/switch_green_thumb_disabled" android:state_enabled="false" />
    <item android:drawable="@drawable/switch_green_thumb_checked" android:state_checked="true" />
    <item android:drawable="@drawable/switch_green_thumb_default" />
</selector>

每个drawable看起来像这样:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <size android:width="20dp" android:height="20dp" />
    <solid android:color="#ffffff" />
    <stroke android:width="1dp" android:color="@color/switch_checked" />
</shape>

编辑:在Gabe Sechan回答之后我直接在drawable中实现了一个阴影,如下所示,它按预期工作:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="oval">
            <size
                android:width="22dp"
                android:height="22dp" />
            <solid android:color="#22000000" />
        </shape>
    </item>

    <item
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp"
        android:top="1dp">
        <shape android:shape="oval">
            <size
                android:width="20dp"
                android:height="20dp" />
            <solid android:color="#ffffff" />
            <stroke
                android:width="1dp"
                android:color="@color/switch_checked" />
        </shape>
    </item>

</layer-list>
答案

把阴影放在drawable中。这就是它在默认drawable中的工作原理,这就是你现在丢失它的原因。它真的是唯一的方法,因为操作系统不知道你实际使用的形状,并且最多可以在整个drawable下方放置阴影,如果使用圆形或圆形边缘则会出错。

以上是关于如何在为拇指使用自定义绘图时保持切换拇指阴影/高度?的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UISlider(跟踪图像高度)

UISlider 自定义图像和拇指高度?

自定义 UISlider 拇指图标:如何阻止拇指图标在拖动时恢复为默认圆形图标?

使用 CoreGraphics 绘制自定义 UIView

如何保持 UISlider 拇指小但分辨率更高的照片?

自定义 UI 滑块,拇指图像大小问题