Флажок с State List Drawable занимает больше места, чем графический вызов для - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть флажок со списком состояний и моей собственной графикой (это для игры). Графика встроенного флажка, по-видимому, 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.

1 Ответ

0 голосов
/ 13 ноября 2011

ОК, я наконец понял это. Эта ссылка приводит к подробному рассмотрению изменения внешнего вида флажка, в котором я выяснил, что фон по умолчанию на самом деле является изображением (это 9-патч, для размещения текста).Базовое фоновое изображение получается размером 60х60 и, таким образом, стало причиной моих неприятностей.Я поместил свое фоновое изображение в свои ресурсы и сослался на него из макета, добавив

android:background="@drawable/my_background"

к определению флажка в макете.

...