如何更改切换按钮中的指示器颜色 (Android)
How to change indicator color in Toggle Button ( Android)
大家好我想使用切换按钮但指示器颜色不同(如绿色或红色),如何更改指示器的颜色。
See default indicator on imgur
我认为您必须创建 2 个按钮的自定义图像,然后使用可绘制对象 xml 作为背景。
例如:
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btntoggle_selector"
android:textColor="@android:color/white"
android:textOff="Toggle Button OFF"
android:textOn="Toggle Button ON "
android:onClick="onToggleButtonClick" />
然后btntoggle_selectorxml
<?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>
bg_selected 和 bg_normal 只是像 9-patch 这样的图像。
虽然 Switch 与 ToggleButton 不同,但在 Android 中,一个类似的问题被标记为重复。
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" />
我觉得如果改动不大的话可以用theme。
<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" />
这是一个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" />
在您的值-> 样式文件中设置此样式
<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>
当我使用上面的 答案时:
<style name="AppTheme.ToggleButton" parent="Base.Widget.AppCompat.Button">
<item name="colorButtonNormal">@color/red</item>
<item name="colorAccent">@color/green</item>
</style>
我的整个切换按钮背景变成红色。
如果您只想更改底部边框颜色,您可以改用:
<style name="AppTheme.ToggleButton" parent="Base.Widget.AppCompat.Button">
<item name="colorControlNormal">@color/red</item>
<item name="colorAccent">@color/green</item>
</style>
大家好我想使用切换按钮但指示器颜色不同(如绿色或红色),如何更改指示器的颜色。
See default indicator on imgur
我认为您必须创建 2 个按钮的自定义图像,然后使用可绘制对象 xml 作为背景。
例如:
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btntoggle_selector"
android:textColor="@android:color/white"
android:textOff="Toggle Button OFF"
android:textOn="Toggle Button ON "
android:onClick="onToggleButtonClick" />
然后btntoggle_selectorxml
<?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>
bg_selected 和 bg_normal 只是像 9-patch 这样的图像。
虽然 Switch 与 ToggleButton 不同,但在 Android 中,一个类似的问题被标记为重复。
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" />
我觉得如果改动不大的话可以用theme。
<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" />
这是一个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" />
在您的值-> 样式文件中设置此样式
<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>
当我使用上面的
<style name="AppTheme.ToggleButton" parent="Base.Widget.AppCompat.Button">
<item name="colorButtonNormal">@color/red</item>
<item name="colorAccent">@color/green</item>
</style>
我的整个切换按钮背景变成红色。
如果您只想更改底部边框颜色,您可以改用:
<style name="AppTheme.ToggleButton" parent="Base.Widget.AppCompat.Button">
<item name="colorControlNormal">@color/red</item>
<item name="colorAccent">@color/green</item>
</style>