如何在android中更改开关的形状

时间:2016-11-04 05:29:08

标签: android android-switch

我使用开关创建了一个布局文件。现在我想改变它的选择器的形状。我也想删除这个开关上的文字。

目前它有一个矩形的形状。我想把它改成圆形。

This is my requirement

这是我的布局文件,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_remind_me"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.pvt.RemindMeActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="3">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/remind_me_head_txt"
                android:layout_marginTop="5dp"
                android:textSize="20sp"
                android:text="Example one"
                android:textStyle="bold"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="120dp"
            android:layout_weight="1">

            <Switch
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dp"
                android:showText="false"
                android:id="@+id/remind_me_switch"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_weight="1">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:id="@+id/remind_me_list_img"
                android:src="@drawable/list_menu" />

        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/remind_me_title_txt"
            android:text="Sample Head"
            android:textSize="12sp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/remind_me_content_txt"
            android:text="Content"
            android:textSize="12sp"/>

    </LinearLayout>

</LinearLayout>

目前我不知道如何实现这一目标。

我们可以改变开关的形状吗?有可能吗?

2 个答案:

答案 0 :(得分:4)

这些形状根据设备而变化,例如它在Redmi Note中显示为矩形,在Moto中显示为圆形。

虽然,为了达到这个目的,你可以有一个切换实现,如下所示: 有三种风格:

  • offToggle(Style Off
  • onToggle(Style On
  • custom_toggle(Style Custom Toggle

样式关闭

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:visible="true">
    <solid android:color="@android:color/holo_blue_dark" />
</shape>

样式

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:visible="true">
    <solid android:color="@android:color/black" />
</shape>

现在我们将在布局中使用的集体风格样式自定义切换

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

现在只需在布局中使用此样式,例如:

<ToggleButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textOn=""
    android:textOff=""
    android:background="@drawable/custom_toggle" />

提示:要从切换/切换中删除文字,请使用android:textOn="" android:textOff=""

答案 1 :(得分:1)

使用任何形状和样式你喜欢在android中切换 这个库对你有很大的帮助 SwitchButton