【问题标题】:Switch stops displaying after adding Thumb/Track drawables添加 Thumb/Track 可绘制对象后,开关停止显示
【发布时间】:2016-06-11 07:10:56
【问题描述】:

我添加了开关,我想改变它的颜色,所以我在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>

Track.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"
    />

我一添加这个,switch就停止在布局中显示了,文字还在,但是switch工具不在了。

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

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

谢谢

【问题讨论】:

    标签: android android-layout android-studio layout


    【解决方案1】:

    我已经修改了,现在试试下面的解决方案。

    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"
        />
    

    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>
    

    【讨论】:

    • 谢谢 :) ,但它仍然没有在布局中显示Swtich。如果我只是从布局中删除android:thumb,它就会开始显示开关。
    【解决方案2】:

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

    如果您添加一个实际的 xml 可绘制对象作为拇指而不仅仅是颜色,您可以向其添加大小元素:

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      相关资源
      最近更新 更多