Android ToggleButton自定义样式未应用

时间:2013-02-06 18:09:18

标签: android android-listview android-button

我跟着this example将一些自定义主题应用到我的切换按钮,但是当我运行我的应用程序时,我看到了通用的android切换图标 - 我想我在这里或那里错过了一个设置并可以使用额外的一双眼睛就可以了。

我有一个用于ListView的布局,我正在尝试将自定义drawable用于已选中/未选中状态,默认情况下每个切换状态设置为CHECKED:

<ToggleButton
        android:id="@+id/profile_item_value_text"
        style="@style/ProfileTagTheme"
        android:layout_width="0px"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:textColor="@color/black"
        android:layout_gravity="center"
        android:gravity="center_vertical|center_horizontal"
        android:checked="true" />

以下是我在styles ProfileTagTheme文件中的内容:<{1}}:

<style name="Widget.Button.Toggle" parent="android:Widget">
    <item name="android:background">@drawable/profile_btn_toggle_bg</item>
    <item name="android:disabledAlpha">@android:attr/disabledAlpha</item>
</style>
<style name="ProfileTagTheme" parent="android:Theme.Black">
    <item name="android:buttonStyleToggle">@style/Widget.Button.Toggle</item>
</style>

反过来,profile_btn_toggle_bg.xml,住在我的主drawable目录中:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@android:color/transparent"/>
    <item android:id="@android:id/toggle" android:drawable="@drawable/profile_btn_toggle"/>
</layer-list>

引用profile_btn_toggle,紧挨着它:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@drawable/tag_active" /> <!-- pressed -->
    <item android:drawable="@drawable/tag" /> <!-- default/unchecked -->
</selector>

我已经验证了自定义图像存在于drawables目录中,所以很明显要么我误解了样式级联的方式,要么我错过了这种风格疯狂的引用。

2 个答案:

答案 0 :(得分:3)

因此,我所遇到的唯一真正问题是错过了android:background实施中的ToggleButton元素;因此,对上述代码的唯一更改是添加该元素,例如

<ToggleButton
        android:id="@+id/profile_item_value_text"
        style="@style/ProfileTagTheme"
        android:background="@drawable/profile_btn_toggle_bg"
        android:layout_width="0px"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:textColor="@color/black"
        android:layout_gravity="center"
        android:gravity="center_vertical|center_horizontal"
        android:checked="true"
        android:onClick="onToggleClicked" />

答案 1 :(得分:1)

我做了一些像我这样的应用程序。请记住,这是一种完全不同的风格方法,可能/可能不适合您的情况。通过设置背景,我可以为切换按钮设置我想要的图像:

<ToggleButton
    android:id="@+id/tb_useNotificationShortcuts"
    android:layout_width="100dp"
    android:layout_height="25dp"
    android:layout_gravity="center"
    android:background="@drawable/togglebutton"
    android:tag="21" />


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

   <item android:drawable="@drawable/custom_toggle_on" android:state_checked="true"/>
   <!-- pressed -->
   <item android:drawable="@drawable/custom_toggle_off"/>
   <!-- default/unchecked -->

</selector>

custom_toggle_on和custom_toggle_off是我的图片,这些也可能是您的图层列表。