Установить состояние кнопки программно

#android #button

#Android #кнопка

Вопрос:

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

 <?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() не работает…

Спасибо

Ответ №1:

ну, в вашем 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;
    }
});
  

Ответ №2:

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

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

1. Как вы думаете, почему это флажок? Это может быть кнопка переключения, но вряд ли флажок.