【问题标题】:Android Switch Widget: Setting android:track causes thumb and track to not show upAndroid Switch Widget:设置 android:track 会导致 thumb 和 track 不显示
【发布时间】:2013-10-17 20:46:34
【问题描述】:

我无法自定义 Android Switch 小部件的外观。我有自定义 xml 可绘制对象,我想将其用于拇指(通常显示“开”或“关”的小按钮部分)和轨道(拇指滑过的背景)。当我使用 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" />

这是预览窗口中的样子:

并应用轨道:

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

应用了轨道的预览窗口:

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

【问题讨论】:

    标签: android xml


    【解决方案1】:

    我刚刚偶然发现了同样的问题,并通过HoloEverywhere issue tracker 找到了解决方法。您需要设置您正在使用的可绘制 XML 形状的 &lt;size&gt;

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

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

    工作中(不是添加的&lt;size&gt;):

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

    【讨论】:

    • 我只需要添加一个高度来修复它。例如
    【解决方案2】:

    通常只是为了更改图像,您不需要对控件进行子类化,您可以设置它的样式,例如带有样式属性。

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

    【讨论】:

    • 感谢您的回复。我知道我不需要对控件进行子类化,但我正在为这个特定的应用程序全面这样做。它不应该影响任何事情,尤其是在这一点上,因为我的子类只有重写的构造函数,它们只调用 super(...) 并且不做任何其他事情。我试过一个drawable,只是一种颜色。当首选可绘制对象时,我还没有找到一种颜色 not 起作用的情况。它在所有其他情况下总是有效的。在这种特殊情况下,使用可绘制对象或颜色,都不起作用。它适用于拇指,但不适用于轨道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多