我有一个带有可绘制状态列表的复选框和我自己的图形(用于游戏)。内置的复选框图形显然是 72x72,而我的图形是 72 高,但只有 27 宽。
我的 main.xml 布局的片段:
<CheckBox android:id="@+id/r_diff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/reset"
android:layout_alignParentBottom="true"
android:onClick="onClickRDiff"
android:button="@drawable/console_select_switch" />
这是我的 console_select_switch.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector android:constantSize="true"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/consw_cntr" /> <!-- pressed -->
<item android:state_checked="true"
android:drawable="@drawable/consw_down" /> <!-- checked -->
<item android:drawable="@drawable/consw_up" /> <!-- default -->
</selector>
现在,当我运行程序时,我的图形确实出现了,而且它们确实有效,但它们占用的宽度与原始的 72 像素正方形图形一样多。我什至尝试过设置
android:width="27px"
在选择器项语句中,同样无效。我什至尝试将 constantSize 设置为“false”,但这没有任何效果。
我不清楚我到底做错了什么——我的理解是 wrap_content 应该使它“尽可能宽”,所以我认为它会起作用。有趣的是,当我在常规按钮中使用一些与 android:background 相同的图形时,它可以正常工作。
编辑:我的项目的 API 级别设置为 7(Android 2.1),如果这有任何相关性(查看文档,我认为我使用的所有东西都已经存在很长时间了,所以我怀疑它)。
编辑:我只是在此控件上设置文本(我尝试了各种值,包括 android:text 参数的空字符串)并且文本绘制到复选框正在消耗的区域的右侧(不是实际占用的区域由图形)。很明显,有些东西认为这个复选框是 72 像素宽,而实际上它是 27 像素。