Как сделать кастомную кнопку для нажатой и отпущенной на андроид? - PullRequest
1 голос
/ 08 июля 2011

Я знаю, что здесь много вопросов такого рода, но я действительно не знаю, почему мой код не работает.Я пытаюсь сделать кнопку с тремя состояниями: нормальный, нажата и отпущена.Когда я говорю «отпущено», я имею в виду, что я хотел бы сделать это как кнопку-переключатель с состояниями active и not active.

. Когда я отпускаю кнопку, она возвращается в состояние по умолчанию.Я хотел бы изменить изображение по клику, так как кнопка checkButton работает.

Я пробовал это:

http://blog.androgames.net/40/custom-button-style-and-theme/

http://www.gersic.com/blog.php?id=56

Android: как создать виджет пользовательской кнопки

http://techdroid.kbeanie.com/2010/03/custom-buttons-on-android.html

custom_buttom.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/focussed" />
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/focussedandpressed" />
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pressed" />
    <item android:drawable="@drawable/default" />
</selector>

layout.xml:

 <Button android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:id="@+id/menu"
                    android:layout_weight="1" android:background="@drawable/custom_button"></Button>

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

Вы хотите что-то вроде чекбокса, верно? В этом случае вам понадобятся два изображения для проверки состояния true и false, и прозрачный файл для фона (у которого нет содержимого, он имеет тот же размер, что и другие изображения). Создайте два нарисованных селекторных файла с таким содержимым:

background_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/your_bg" />

</selector>

state_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="true" android:state_focused="true"
        android:drawable="@drawable/checkbox_on" />

    <item android:state_checked="false" android:state_focused="true"
        android:drawable="@drawable/checkbox_off" />

    <item android:state_checked="false" 
        android:drawable="@drawable/checkbox_off" />

    <item android:state_checked="true" 
        android:drawable="@drawable/checkbox_on" />

</selector>

Поместите эти xml в вашу папку для рисования, и в вашем макете установите флажок:

<CheckBox
    android:layout_width="50dip"
    android:layout_height="50dip"
    android:background="@drawable/background_selector"
    android:button="@drawable/state_selector"
/>

Надеюсь, эта помощь ^ _ ^

0 голосов
/ 08 июля 2011

Вы используете android:state_focused и android:state_pressed.

А как насчет android: state_checked ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...