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

时间:2016-07-27 18:19:07

标签: android android-6.0-marshmallow

这是什么样的巫术?

Api 23: Api 23

Api 21: 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有关,但我还没有设法让它工作。

1 个答案:

答案 0 :(得分:1)

好的,我仍然不知道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发生了变化。