API 21 和 API 23 上的不同选择器行为

Different selector behavior on API 21 and API 23

这是什么魔法?

Api 23:

Api 21:

我正在尝试实现自定义复选框选择器。经过几个小时试图找出我的代码有什么问题后,我得出的结论是选择器在不同 api 级别上呈现不同。上图来自 AS,但我在真实设备上遇到了相同的行为。

如果你想测试一下,这里是代码:

<item
    android:state_checked="false">
    <layer-list>
        <item>
            <shape android:innerRadiusRatio="5"
                   android:shape="ring"
                   android:thickness="0dp"
                   android:useLevel="false">
                <solid
                    android:width="1dp"
                    android:color="#08aa92"/>
            </shape>
        </item>
        <item>
            <shape android:innerRadiusRatio="2"
                   android:shape="ring"
                   android:thickness="0dp"
                   android:useLevel="false">
                <stroke
                    android:width="2dp"
                    android:color="#cccccc"/>
            </shape>
        </item>
    </layer-list>
</item>

我的问题是:我该如何解决这个问题?

编辑 1:它似乎与 ring shapes for L preview not working 有关,但我还没有成功。

好吧,我仍然不知道 API 23 有什么问题,但我通过将第一个选择器项更改为:

设法解决了这个问题
        <item>
            <shape android:innerRadiusRatio="1000"
                   android:shape="ring"
                   android:thickness="10dp"
                   android:useLevel="false">
                <solid android:width="1dp" 
                       android:color="#08aa92"/>
            </shape>
        </item>

只有厚度和android:innerRadiusRatio改变了。