如何设置Android Switch的样式?

Gle*_*.nz 118 android styling android-theme android-styles android-switch

API 14中引入的切换小部件默认使用holo主题进行样式设置.我想把它的风格略有不同,改变它的颜色和形状有点因为品牌的原因.怎么会这样呢?我知道它必须是可能的,因为我已经看到默认ICS和三星的touchwiz主题之间的区别

在此输入图像描述

我假设我需要一些状态drawables,我在http://developer.android.com/reference/android/R.styleable.html中看到了一些样式,Switch_thumb和Switch_track看起来像我之后的样子.我只是不知道如何使用它们.

我正在使用ActionbarSherlock,如果这有所作为.当然,只有运行API v14或更高版本的设备才能使用交换机.

Jan*_*usz 254

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

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:thumb="@drawable/switch_thumb"
    android:track="@drawable/switch_bg" />
Run Code Online (Sandbox Code Playgroud)

现在,您需要创建一个选择器,用于定义切换器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>
Run Code Online (Sandbox Code Playgroud)

这定义了拇指可绘制,即在背景上移动的图像.滑块使用了四个 9patch图像:

已停用的版本(Android正在使用的xhdpi版本)停用的版本
按下的滑块: 按下的滑块
激活的滑块(开启状态):激活的滑块
默认版本(关闭状态): 在此输入图像描述

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

<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>
Run Code Online (Sandbox Code Playgroud)

停用版本: 停用的版本
重点版本: 重点版本
而默认版本:默认版本

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

  • 还有一个状态是<item android:state_checked ="true">,它可以在开关处于"开启"状态时更改轨道图像.因此,如果要在"开"/"关"上更改曲目,请使用此状态. (2认同)

kis*_*u27 50

这是Janusz的精彩回复.但只是为了那些来到这个页面寻求答案的人,更简单的方法是从Android Asset Studio链接到http://android-holo-colors.com/(死链接)

所有工具的详细描述都在AndroidOnRocks.com(现在离线站点)

但是,我强烈建议大家阅读Janusz的回复,因为它会使理解更加清晰.使用该工具可以快速完成工作

  • 节省时间.所有9个补丁,状态列表drawables等一键! (6认同)