Android Switch Widget:设置android:track会导致拇指和曲目不显示

时间:2013-09-06 13:49:45

标签: android xml

我无法自定义Android Switch小部件的外观。我有自定义xml drawables,我想用于拇指(通常显示为On或Off的小按钮部分)和轨道(拇指滑过的背景)。当我使用android:thumb设置拇指时,它工作正常。当我设置轨道时(无论是否设置了拇指),开关都会完全消失,而我只剩下显示的文字。

这是我应用拇指时的代码:

<com.blahblahblah.blah.CustomSwitch
    android:id="@+id/switch_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textOff="Off"
    android:textOn="On"
    android:text="Something Awesome"
    android:textColor="@android:color/black"
    android:thumb="@drawable/custom_switch_thumb" />

以下是预览窗口中的内容:

enter image description here

应用了曲目:

<com.blahblahblah.blah.CustomSwitch
    android:id="@+id/switch_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textOff="Off"
    android:textOn="On"
    android:text="Something Awesome"
    android:textColor="@android:color/black"
    android:track="@color/track_color" />

应用了跟踪的预览窗口:

enter image description here

作为参考,我在OSX 10.7.5上使用Android Studio 0.2.3。

2 个答案:

答案 0 :(得分:21)

我偶然发现了同样的问题,并在HoloEverywhere issue tracker找到了解决办法。您需要设置正在使用的可绘制XML形状的<size>

不工作(小部件在那里,我可以与它交互,但我看不到它,它是隐藏的):

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

  <solid android:color="@color/black_50" />
</shape>

工作(不是添加的<size>):

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

  <solid android:color="@color/black_50" />
  <size android:width="56dp" android:height="20dp" />
</shape>

答案 1 :(得分:0)

一般情况下,只是为了更改图像,您不需要对控件进行子类化,您可以为其设置样式,例如:使用style属性。

关于您的问题,有几个控件需要可绘制而不是普通颜色。在控件定义(xml部分)中,您可以定义允许引用,但不能将其限制为可绘制引用。所以只需避免直接使用颜色。如果您不想添加图像,也可以使用xml定义它,但请注意,这并不适用于所有情况。