带状态列表Drawable的复选框比图形调用占用更多空间

时间:2011-11-11 14:30:47

标签: android checkbox statelistdrawable

我有一个带有状态列表drawable和我自己的图形(这是游戏)的复选框。内置的复选框图形显然是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时。

1 个答案:

答案 0 :(得分:0)

好的,我终于明白了。 This link导致详细查看更改复选框的外观,其中我发现默认背景实际上是一个图像(它是一个9补丁,以容纳文本)。基础背景图像结果为60x60,因此是我的麻烦的原因。我在我的资源中放置了我自己的背景图像,并通过添加

从布局中引用它
android:background="@drawable/my_background"

到布局中的复选框定义。