为了账号安全,请及时绑定邮箱和手机立即绑定

如何自定义开关按钮?

/ 猿问

如何自定义开关按钮?

慕函数4003404 2019-12-16 09:40:16

我希望将“自定义Switch按钮”更改为以下内容:

如何实现呢?


查看完整描述

3 回答

?
慕妹3242003

您可以使用以下代码更改颜色和文本:


<org.jraf.android.backport.switchwidget.Switch

                        android:id="@+id/th"

                        android:layout_width="match_parent"

                        android:layout_height="wrap_content"

                        app:thumb="@drawable/apptheme_switch_inner_holo_light"

                        app:track="@drawable/apptheme_switch_track_holo_light"

                        app:textOn="@string/switch_yes"

                        app:textOff="@string/switch_no"

                        android:textColor="#000000"

                        />

在res / values文件夹中创建一个名为colors.xml的xml:


<?xml version="1.0" encoding="utf-8"?>

<resources>

    <color name="red">#ff0000</color>

    <color name="green">#00ff00</color>

</resources>

在可绘制文件夹中,创建一个xml文件my_btn_toggle.xml:


  <selector xmlns:android="http://schemas.android.com/apk/res/android">

        <item android:state_checked="false" android:drawable="@color/red"  />

        <item android:state_checked="true" android:drawable="@color/green"  />

    </selector>

并在定义您的切换按钮的xml部分中添加:


android:background="@drawable/my_btn_toggle

改变颜色textOn并textOff使用


android:switchTextAppearance="@style/Switch"


查看完整回答
反对 回复 2019-12-16
?
潇湘沐

但是,这可能不是最好的方法,但是我采用了另一种方法来解决与Switch相关的所有问题。这是我的代码-


<RadioGroup

        android:checkedButton="@+id/offer"

        android:id="@+id/toggle"

        android:layout_width="match_parent"

        android:layout_height="30dp"

        android:layout_marginBottom="@dimen/margin_medium"

        android:layout_marginLeft="50dp"

        android:layout_marginRight="50dp"

        android:layout_marginTop="@dimen/margin_medium"

        android:background="@drawable/pink_out_line"

        android:orientation="horizontal">


        <RadioButton

            android:layout_marginTop="1dp"

            android:layout_marginBottom="1dp"

            android:layout_marginLeft="1dp"

            android:id="@+id/search"

            android:background="@drawable/toggle_widget_background"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:button="@null"

            android:gravity="center"

            android:text="Search"

            android:textColor="@color/white" />


        <RadioButton

            android:layout_marginRight="1dp"

            android:layout_marginTop="1dp"

            android:layout_marginBottom="1dp"

            android:id="@+id/offer"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:background="@drawable/toggle_widget_background"

            android:button="@null"

            android:gravity="center"

            android:text="Offers"

            android:textColor="@color/white" />

    </RadioGroup>

pink_out_line.xml


<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">

    <corners android:radius="2dp" />

    <solid android:color="#80000000" />

    <stroke

        android:width="1dp"

        android:color="@color/pink" />

</shape>

toggle_widget_background.xml


<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/pink" android:state_checked="true" />

    <item android:drawable="@color/dark_pink" android:state_pressed="true" />

    <item android:drawable="@color/transparent" />

</selector>


查看完整回答
反对 回复 2019-12-16
?
一只名叫tom的猫

<Switch android:layout_width="wrap_content" 

                    android:layout_height="wrap_content"

                    android:thumb="@drawable/custom_switch_inner_holo_light"

                    android:track="@drawable/custom_switch_track_holo_light"

                    android:textOn="@string/yes"

                    android:textOff="@string/no"/>

drawable / custom_switch_inner_holo_light.xml


<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="false" android:drawable="@drawable/custom_switch_thumb_disabled_holo_light" />

    <item android:state_pressed="true"  android:drawable="@drawable/custom_switch_thumb_pressed_holo_light" />

    <item android:state_checked="true"  android:drawable="@drawable/custom_switch_thumb_activated_holo_light" />

    <item                               android:drawable="@drawable/custom_switch_thumb_holo_light" />

</selector>

drawable / custom_switch_track_holo_light.xml


<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="true"  android:drawable="@drawable/custom_switch_bg_focused_holo_light" />

    <item                               android:drawable="@drawable/custom_switch_bg_holo_light" />

</selector>

接下来的图像是9.paths可绘制对象,并且它们必须具有不同的密度(mdpi,hdpi,xhdpi,xxhdpi)。例如,我给xxhdpi(如果需要,您可以调整它们的大小):


drawable / custom_switch_thumb_disabled_holo_light


custom_switch_thumb_disabled_holo_light


drawable / custom_switch_thumb_pressed_holo_light


custom_switch_thumb_pressed_holo_light


drawable / custom_switch_thumb_activated_holo_light


custom_switch_thumb_activated_holo_light


drawable / custom_switch_thumb_holo_light


custom_switch_thumb_holo_light


drawable / custom_switch_bg_focused_holo_light


custom_switch_bg_focused_holo_light


drawable / custom_switch_bg_holo_light


查看完整回答
反对 回复 2019-12-16

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信