Кнопка Android с текстом с разными изображениями для включения и нажатия
Я пытаюсь создать кнопку с состоянием, имеющую Text
и Image
сверху через следующий код:
<Button
android:id="@+id/btnMultiplayer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableTop="@drawable/multiplayer"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:text="Multiplayer"/>
чтобы получить следующее:
![Изображение с кнопкой]()
Тем не менее, я не мог найти способ изменить рисование сверху, когда нажимается изображение.
Я попытался установить android:drawableTop
в @drawable/multiplayer_stateful
, где @drawable/multiplayer_stateful
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawableTop="@drawable/multiplayer" android:state_enabled="true" android:state_window_focused="false"/>
<item android:drawableTop="@drawable/multiplayer_pressed" android:state_pressed="true"/>
</selector>
но это не работает. (Обратите внимание, что @drawable/multiplayer и @drawable/multiplayer_pressed являются файлами png)
Любые предложения?
Ответы
Ответ 1
Вы должны использовать android:dither = "true"
Попробуйте это.
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:dither="true" >
<item android:drawableTop="@drawable/multiplayer" android:state_enabled="true" android:state_window_focused="false"/>
<item android:drawableTop="@drawable/multiplayer_pressed" android:state_pressed="true"/>
</selector>
Из Android-документов:
Включает или отключает сглаживание растрового изображения, если растровое изображение не имеют ту же конфигурацию пикселей, что и экран (например: ARGB 8888 с экраном RGB 565).
Должно быть логическое значение: "true" или "false".
Это также может быть ссылка на ресурс (в форме "@[package:] type: name" ) или атрибут темы (в форме "? [package:] [type:] name" ), содержащий значение этого типа.
Сглаживание влияет на то, как цвета, которые являются более высокой точностью, чем устройство, отбираются с понижением. Без сглаживания обычно быстрее, но более высокие цвета точности просто усекаются (например, 8888 → 565). Dithering пытается распространять ошибку, присущую этому процессу, для уменьшения визуальных артефактов.
Надеюсь, это поможет!
Ответ 2
включить атрибут dither в вашем селекторе.
Android: дитеринг
Boolean. Включает или отключает сглаживание растрового изображения, если растровое изображение не имеет той же конфигурации пикселей, что и экран (например: растровое изображение ARGB 8888 с экраном RGB 565).
Для более подробной информации перейдите по этой ссылке: http://developer.android.com/guide/topics/resources/drawable-resource.html