自定义switchcompat包含状态

时间:2017-03-01 11:46:39

标签: android custom-controls switchcompat

使用列表和地图数据演示开发应用程序。对于在演示之间切换,应该使用带图像的自定义开关,如下所示:

enter image description here

如何创建这样的自定义switchcompat?

1 个答案:

答案 0 :(得分:0)

这是一个非常好的例子:

ORIGINAL ANSWER

您可以定义用于背景的drawable,以及切换器部分,如下所示:

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:thumb="@drawable/switch_thumb"
    android:track="@drawable/switch_bg" />

现在您需要创建一个选择器,用于定义切换器drawable的不同状态。 这里是来自Android资源的副本:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/switch_thumb_disabled_holo_light" />
    <item android:state_pressed="true"  android:drawable="@drawable/switch_thumb_pressed_holo_light" />
    <item android:state_checked="true"  android:drawable="@drawable/switch_thumb_activated_holo_light" />
    <item                               android:drawable="@drawable/switch_thumb_holo_light" />
</selector>

这定义了thumb drawable,即在背景上移动的图像。滑块使用了四个ninepatch图像:

已停用的版本(Android正在使用的xhdpi版本) The deactivated version
按下的滑块: The pressed slider
激活的滑块(开启状态): The activated slider
默认版本(关闭状态): enter image description here

以下选择器中定义的背景还有三种不同的状态:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/switch_bg_disabled_holo_dark" />
    <item android:state_focused="true"  android:drawable="@drawable/switch_bg_focused_holo_dark" />
    <item                               android:drawable="@drawable/switch_bg_holo_dark" />
</selector>

停用版本: The deactivated version
重点版本: The focused version
而默认版本: the default version

要设置样式开关,只需创建这两个选择器,将它们设置为切换视图,然后将七个图像更改为所需的样式。