Установить состояние кнопки программно - PullRequest
2 голосов
/ 29 сентября 2011

Я определяю состояния моей кнопки с помощью

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

    <item android:state_pressed="true" >
        <shape>
            <gradient
                android:endColor="@color/orange_light"
                android:startColor="@color/orange"
                android:angle="270" />            
            <corners
                android:radius="6dp" />
            <padding
                android:left="10dp"                
                android:right="10dp" />
        </shape>
    </item>

    <item android:state_focused="true" >
        <shape>
            <gradient
                android:endColor="@color/orange_light"
                android:startColor="@color/orange"
                android:angle="270" />
            <corners
                android:radius="6dp" />
            <padding
                android:left="10dp"                
                android:right="10dp" />
        </shape>
    </item>

    <item>        
        <shape>
            <gradient
                android:endColor="@color/grey_light"
                android:startColor="@color/grey"
                android:angle="270" />
            <corners
                android:radius="6dp" />
            <padding
                android:left="10dp"
                android:right="10dp" />
        </shape>
    </item>
</selector>

и устанавливаю ее в качестве фона для моей кнопки.

Когда я нажимаю ее, она правильно меняет цвет, но я бы хотела, чтобы она сохранялась.«нажатый» цвет после отпускания (чтобы показать, какая кнопка активна).

Как это сделать?requestFocus() не работает ...

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011

ну в вашем setOnClickListener вы можете реализовать некоторую логику.Например, если кнопка нажата, она получает один цвет и сохраняет этот цвет до тех пор, пока не будет нажата другая кнопка, и когда вторая нажатая кнопка, чем фон первой кнопки, будет сброшена к значению по умолчанию ....

вы можете реализовать то, чтокогда вы хотите, вам просто нужно добавить немного логики, и это так.Если вы хотите, чтобы ваша кнопка имела какой-то цвет только для того времени, пока оно находится в нажатом состоянии, то переопределите прослушиватель на ощупь

, вы можете сделать это

addButtonLayout.setOnTouchListener(new OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
        imageAddSign.setImageResource(R.drawable.a);
        }else{
        imageAddSign.setImageResource(R.drawable.b);
        }
        return false;
    }
});
0 голосов
/ 29 сентября 2011

Я думаю, что вам нужен флажок, а не кнопка.Попробуйте установить фон или создать подкласс, если вам нужно больше возможностей.

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