У меня есть флажок со списком состояний и моей собственной графикой (это для игры). Графика встроенного флажка, по-видимому, 72х72, а моя графика имеет высоту 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: фон в обычной кнопке, он отлично работает.
Изменить: уровень API в моем проекте установлен на 7 (Android 2.1), если это имеет какое-либо значение (глядя на документы, я думаю, что все, что я использую, было в наличии в течение длительного времени, поэтому Я сомневаюсь в этом).
Edit: я только что поиграл с настройкой текста на этом элементе управления (я пробовал различные значения, включая пустую строку для параметра android: text), и текст рисуется справа от области, которую использует флажок (не площадь фактически занята графикой). Ясно, что кто-то считает, что этот флажок имеет ширину 72 пикселя, тогда как на самом деле он равен 27.