12

通过阅读这篇文章,我能够创建一个由图像组成的切换按钮。我的切换没有任何文字,只有开/关图像。

当我的切换按钮被创建时,它被拉伸并失去了它的比例,我如何让它保持原来的大小?

这些是我使用的图像:

在

离开

编码:

主.xml:

<ToggleButton
   android:id="@+id/changeNumerals"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentLeft="true"
   android:layout_alignParentTop="true"
   android:checked="true"
   android:background="@drawable/toggle_bg"
   android:textOn=""
   android:textOff=""            
/>

可绘制/切换.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_checked="false" android:drawable="@drawable/toggle_off" />
   <item android:state_checked="true" android:drawable="@drawable/toggle_on" />
</selector>

可绘制/toggle_bg.xml:

<?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/toggle" />
</layer-list>
4

3 回答 3

13

尝试以下属性<ToggleButton>

android:background="@android:color/transparent"
android:button="@drawable/toggle_bg"

它应该工作。祝你好运 :)

于 2012-09-27T12:41:00.650 回答
7

尺寸是“硬编码”的,但它们会随着屏幕的大小而缩放。

所以xml看起来像:

android:layout_width="64dp"
android:layout_height="24dp"

dps 的官方文档在这里

于 2012-09-27T12:33:09.507 回答
3

为了支持从 GINGERBREAD 到当前版本的版本,我最终使用了:

<ToggleButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/filterPhotos"
    android:checked="true"
    android:textOn=""
    android:textOff=""
    android:paddingLeft="5dp"
    android:drawableRight="@drawable/toggle_filter_photos"
    android:background="@null"/>

和可绘制的toggle_filter_photos.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/picture_filter_icons"
          android:state_checked="true" />
    <item android:drawable="@drawable/picture_inactive_filter_icons" />
</selector>

上面的其他解决方案不适用于 GINGERBREAD 和更新版本,因为图标根本不会显示(android:button在 GINGERBREAD 上)或纵横比丢失(android:background在 JELLY_BEAN_MR1 (4.2.2) 上)。

于 2013-12-20T12:04:34.603 回答