#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. Как вы думаете, почему это флажок? Это может быть кнопка переключения, но вряд ли флажок.