添加Thumb / Track drawable后,开关停止显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加Thumb / Track drawable后,开关停止显示相关的知识,希望对你有一定的参考价值。

我添加了开关,我想改变它的颜色,所以我在drawables中添加了以下内容。

Thumb.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@color/black" />
    <item android:state_pressed="true"  android:drawable="@color/tabAccessoryButtonSelected" />
    <item android:state_checked="true"  android:drawable="@color/tabAccessoryButtonSelected" />

</selector>

等等。 XML

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true"  android:drawable="@color/tabAccessoryButtonSelected" />

</selector>

Layout.xml

<Switch
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:id="@+id/switch1"
    android:layout_centerHorizontal="true"
    android:paddingTop="50dp"
    android:text="@string/notification_settings"
    android:textColor="@color/white"
    android:thumb="@drawable/thumb"
    android:track="@drawable/track"
    />

一旦我添加了这个,开关已停止在布局中显示,文本仍然存在,但切换工具不存在。

如果我删除Thumb.xmlTrack.xml它开始显示开关。

请指导我在这里做错了什么。

谢谢

答案

我现在修改它,尝试下面的解决方案。

Layout.xml

<Switch
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:id="@+id/switch1"
    android:layout_centerHorizontal="true"
    android:paddingTop="50dp"
    android:text="@string/notification_settings"
    android:textColor="@color/white"
    android:thumb="@drawable/thumb"
    android:track="@drawable/track"
    />

等等。 XML

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_focused="true"  android:drawable="@drawable/color_thumb" />  
        <item                               android:drawable="@drawable/gray_track" />  
    </selector>

thumb.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/gray_track" />
    <item android:state_pressed="true"  android:drawable="@drawable/color_thumb" />
    <item android:state_checked="true"  android:drawable="@drawable/color_thumb" />
    <item                               android:drawable="@drawable/gray_track" />
</selector>

color_thumb.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <size android:height="40dp"  />
    <gradient android:height="40dp" android:startColor="@color/tabAccessoryButtonSelected"" android:endColor="@color/tabAccessoryButtonSelected""/>
</shape>

gray_track.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <size android:height="40dp"  />
    <gradient android:height="40dp" android:startColor="@color/tabAccessoryButtonSelected" android:endColor="@color/tabAccessoryButtonSelected"/>
</shape>
另一答案

我知道这是一个古老的问题,但我今天遇到了同样的问题,问题似乎是拇指可绘制需要一个固定的大小。轨道尺寸似乎根据拇指的大小进行调整,因此不会显示没有指示尺寸的拇指,因此轨道也不会显示。

如果您将实际的xml drawable添加为拇指而不仅仅是颜色,则可以向其添加尺寸元素:

switch_thumb.xml

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

    <solid android:color="@color/colorSwitchThumb" />

    <corners android:radius="@dimen/switch_corner_radius"/>

    <size android:height="10dp" android:width="10dp"/>

</shape>

以上是关于添加Thumb / Track drawable后,开关停止显示的主要内容,如果未能解决你的问题,请参考以下文章

开关Switch系列:Switch修改滑块(thumb)和滑道(track)的颜色

[SwitchPreference]代码中动态修改SwitchPreference的Thumb或Track颜色

[SwitchPreference]代码中动态修改SwitchPreference的Thumb或Track颜色

android:thumb="@drawable/seeker"啥意思

带文字的seekbar : 自定义progressDrawable/thumb :解决显示不全

带文字的seekbar : 自定义progressDrawable/thumb :解决显示不全