我如何devise一个Android开关?
在API 14中引入的开关小部件的默认样式是全息主题。 我想略微改变它的风格,为了品牌的原因改变它的颜色和形状。 这个怎么办? 我知道这一定是可能的,因为我看到了默认的ICS和三星的touchwiz主题之间的区别
我假设我需要一些状态drawable,我已经看到了一些样式在http://developer.android.com/reference/android/R.styleable.html与Switch_thumb和Switch_track看起来像我可能会后。 我只是不知道如何去使用它们。
我使用ActionbarSherlock如果有所作为。 当然,只有运行API v14或更高版本的设备才能使用交换机。
您可以定义用于背景的可绘图,以及切换器部分,如下所示:
<Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:thumb="@drawable/switch_thumb" android:track="@drawable/switch_bg" />
现在您需要创build一个select器来定义可切换切换器的不同状态。 这里来自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>
这定义了可绘制的拇指,即在背景上移动的图像。 有四个ninepatch图像用于滑块:
停用的版本(Android正在使用的xhdpi版本)
按下的滑块:
激活的滑块(打开状态):
默认版本(closures状态):
在以下select器中定义的背景还有三种不同的状态:
<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>
停用的版本:
重点版本:
和默认版本:
要有一个风格的开关只是创build这两个select器,将它们设置到您的交换机视图,然后将七个图像更改为所需的样式。
这是Janusz的一个非常棒的详细答复。 但只是为了寻求答案的人的利益,更简单的方法是从Android Asset Studio链接http://android-holo-colors.com/
所有工具的详细描述在AndroidOnRocks.com (网站现在离线)
不过,我强烈build议大家阅读Janusz的回复,因为这会使理解更清楚。 使用该工具快速地做东西
替代和更简单的方法是使用形状,而不是9补丁。 这已经在这里解释: https : //stackoverflow.com/a/24725831/512011
您可以通过设置不同的颜色属性来定制材质样式。 例如自定义应用程序主题
<style name="CustomAppTheme" parent="Theme.AppCompat"> <item name="android:textColorPrimaryDisableOnly">#00838f</item> <item name="colorAccent">#e91e63</item> </style>
自定义切换主题
<style name="MySwitch" parent="@style/Widget.AppCompat.CompoundButton.Switch"> <item name="android:textColorPrimaryDisableOnly">#b71c1c</item> <item name="android:colorControlActivated">#1b5e20</item> <item name="android:colorForeground">#f57f17</item> <item name="android:textAppearance">@style/TextAppearance.AppCompat</item> </style>
您可以通过定义xml drawable来自定义切换轨道并像下图一样切换拇指 。 欲了解更多信息http://www.zoftino.com/android-switch-button-and-custom-switch-examples