#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.