如何改变Android Switch轨道的宽度?

时间:2013-05-16 23:53:58

标签: java android

我对这个小问题感到很疯狂。我有一个'切换'表单小部件,但无论我尝试多少,我都不能让它更窄。即使我有一个字符而不是'ON'或'OFF',开关的大小也保持不变。 '拇指'变小,但必须拖动与之前相同的距离。将'layout_width'更改为较小的值只会切断剩余的轨道。 'minWidth'似乎什么也没做。

有谁知道我怎么做到这一点?理想情况下,我只想要一个空拇指,我会用拇指颜色代码知道哪个是哪个。

XML代码:

<Switch
     android:id="@+id/switch3"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Switch"
     android:textOff=" "
     android:textOn=" " />

我开始说:enter image description here

但我想要这样的事情: enter image description here

4 个答案:

答案 0 :(得分:53)

在此属性中设置所需的开关宽度。

机器人:switchMinWidth

<Switch
android:id="@+id/switchVisitAgain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="1dp"
android:checked="false"
android:gravity="center_vertical"
android:switchMinWidth="56dp"
android:textOff=""
android:textOn=""
android:thumb="@drawable/round_button"
android:track="@drawable/button_black" />

谢谢, bskania

答案 1 :(得分:2)

这是我的解决方案。我删除了文本,设置了轨道的填充并定义了switchMinWidth道具。这是我的xml:

<Switch
        android:id="@+id/theSwitchId"
        android:textOn=""
        android:textOff=""
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:thumbTextPadding="5dp"
        android:switchMinWidth="40dp"
        android:layout_gravity="right|center_vertical" />

希望它对某人有帮助。

答案 2 :(得分:0)

正在使用androidx.appcompat.widget.SwitchCompat的人需要使用

app:switchMinWidth

示例:

<androidx.appcompat.widget.SwitchCompat
    android:id="@+id/switch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:switchMinWidth="50dp"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    app:track="@drawable/custom_track"
    android:thumb="@drawable/custom_thumb"
   />

答案 3 :(得分:-1)

您应该使用android:track代替android:thumb

我的所有代码:

<Switch
    android:id="@+id/switch_security_tog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="16dp"
    android:background="@color/transparent"
    android:button="@null"
    android:textOff=""
    android:textOn=""
    android:thumb="@null"
    android:switchMinWidth="56dp"
    android:track="@drawable/thumb" />