如何在切换按钮(Android)中更改指示器颜色

时间:2016-05-17 19:31:59

标签: android togglebutton indicator

我希望每个身体都能使用切换按钮但指针颜色不同(如绿色或红色),如何更改指示灯的颜色。

See default indicator on imgur

4 个答案:

答案 0 :(得分:3)

我认为你将不得不创建2个按钮的自定义图像,然后使用可绘制的xml作为背景。

例如:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/bg_selected" android:state_checked="true" android:state_pressed="true"/>
    <item android:drawable="@drawable/bg_selected" android:state_checked="true" android:state_focused="false"/>
    <item android:drawable="@drawable/bg_normal" android:state_checked="false" android:state_pressed="true"/>
    <item android:drawable="@drawable/bg_normal" android:state_checked="false" android:state_focused="false"/>
</selector>

然后是btntoggle_selector xml

compile 'com.squareup.picasso:picasso:2.5.2'

bg_selected和bg_normal只是像9-patch那样的图像。

See the Android developer guide on 9-patch images

答案 1 :(得分:1)

我认为如果变化不大,你可以使用主题。

<style name="AppTheme.ToggleButton" parent="Base.Widget.AppCompat.Button">
    <item name="colorButtonNormal">@color/colorPrimary</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="colorAccent">@android:color/white</item>
</style>

在这里你可以在ToggleButton上使用这个新主题。

<ToggleButton
    android:id="@+id/keyboard_caps_lock_btn"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:minWidth="0dp"
    android:textOff="@string/keyboard_caps_lock"
    android:textOn="@string/keyboard_caps_lock"
    android:textAllCaps="false"
    android:theme="@style/AppTheme.ToggleButton" />

答案 2 :(得分:0)

类似的问题被标记为重复虽然Switch与Android中的ToggleButton不同。 How to change color of the toggle button? 两者都继承自CompoundButton;但有一些不同的方法和定制支持。 在其他位置发布的setBackground无法更改拇指或边框。下面是一个基于更改边框颜色的示例 How set background drawable programmatically in Android

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3dp" />
<stroke android:width="2px" android:color="#000000" /> </shape>

然后在代码中:

if(!isChecked) {
    buttonView.setBackgroundResource(R.drawable.border_for_toggle_button);
}

因此,通过设置背景,可以改变外观。要改变内部的整个颜色,可以在上面添加更多可绘制的XML;例如添加它以使内部变为绿色:

<gradient android:startColor="#FFFFFF"
    android:endColor="#00FF00"
    android:angle="270" />

答案 3 :(得分:0)

这是一个XML文件

<Toggle Button
    android:id="@+id/my_location"
    android:textColor="#000"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAllCaps="false"
    android:theme="@style/ToggleButton"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true" />

在您的值中设置此样式 - &gt;样式文件

<style name="ToggleButton" parent="Base.Widget.AppCompat.Button">
    <item name="colorButtonNormal">@color/colorPrimary</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="colorAccent">@android:color/white</item>
</style>