Настройка флажка Android

#android #checkbox #custom-controls

#Android #флажок #пользовательские элементы управления

Вопрос:

Я пытаюсь частично изменить изображения для флажков Android. Следуя приведенному здесь руководству, я провел следующий эксперимент:

 <CheckBox
  android:checked="true"
  android:layout_width="wrap_content" android:layout_height="wrap_content"/>
<CheckBox
  android:checked="true"
  android:layout_width="wrap_content" android:layout_height="wrap_content"
  android:button="@android:drawable/btn_check_on"
  android:background="@android:drawable/btn_check_label_background"/>    
<CheckBox
  android:checked="true"
  android:layout_width="wrap_content" android:layout_height="wrap_content"
  android:button="@drawable/cb_on"
  android:background="@drawable/cb_background"/>
  

Для третьего флажка я скопировал изображения btn_check_on.png и btn_check_label_background.9.png из Android SDK в res / drawable проекта и переименовал их в cb_on.png и cb_background.png. Хотя я ожидал, что три флажка будут иметь одинаковый внешний вид, на удивление, третий флажок больше, чем первые два. Кто-нибудь может объяснить, почему? Как я могу исправить эту проблему?

Ответ №1:

Попробуйте переименовать свое изображение cb_background.png в cb_background.9.png

.9 означает, что изображение состоит из девяти исправлений, которые автоматически масштабируются.

Я думаю, именно поэтому третье изображение больше.

Для получения дополнительной информации о nine-patch: здесь

Комментарии:

1. Спасибо, но изменения, упомянутые @jkhouw1, также необходимы.

Ответ №2:

Я предполагаю, что вы скопировали только одно разрешение чертежей. Вам нужно скопировать их все (mdpi, hdpi, ldpi) в соответствующую папку res (drawable-mdpi, drawable-hdpi, drawable-ldpi)

Комментарии:

1. Спасибо. @Jokahero также прав — копия фонового изображения должна иметь имя с расширением .9.png. На самом деле можно обойтись и без фонового изображения.

2. (1) Все еще остается одна нерешенная проблема: SDK, похоже, не содержит никаких ресурсов ldpi, поэтому мне нечего копировать в drawable-ldpi проектов. Копирование mdpi в ldpi не работает. (2) Для mdpi, похоже, мне также нужно скопировать из drawable-mdpi Android в drawable-mdpi обоих проектов и drawable, иначе флажки не будут отображаться должным образом для Android 1.5.

3. изображения ldpi вам, вероятно, не понадобятся. если бы вы действительно захотели, вы могли бы уменьшить свой mdpi с помощью photochop или gimp

Ответ №3:

@Jokahero прав насчет обновления 9, а @jkhouw1 прав насчет разрешений. Что касается флажков, вам также необходимо знать о StateListDrawable.