У меня есть кнопка переключения, фон которой я хотел бы изменить при нажатии. Моя цель - изменить цвет кнопки даже после события нажатия на новый цвет. При повторном нажатии он переходит в исходное состояние.
Я использовал следующий код, но в моем случае цвет не сохраняется после события «Нажмите». Когда кнопка нажата, цвет меняется. Но как бы то ни было, он возвращается к исходному цвету кнопки, как только заканчивается событие нажатия.
Компоновка:
<ToggleButton android:id="@+id/price_activate_button"
android:layout_width="wrap_content"
android:textSize="15dp"
android:text="@string/string_price"
android:layout_alignParentLeft="true"
android:layout_height="wrap_content"
android:background="@drawable/button_blue"
style="@style/ButtonText"
android:textOn="Price"
android:textOff="Price"></ToggleButton>
Style:
<?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="true">
<shape>
<solid
android:color="#859dbc" />
<stroke
android:width="1dp"
android:color="#859dbc" />
<corners
android:radius="2dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item android:state_pressed="true" >
<shape>
<solid
android:color="#859dbc" />
<stroke
android:width="1dp"
android:color="#859dbc" />
<corners
android:radius="2dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item android:state_focused="true" android:state_pressed="false" >
<shape>
<solid
android:color="#2c68e7" />
<stroke
android:width="1dp"
android:color="#2c68e7" />
<corners
android:radius="2dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item android:state_checked="true">
<shape>
<solid
android:color="#2c68e7" />
<stroke
android:width="1dp"
android:color="#2c68e7" />
<corners
android:radius="2dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item android:state_checked="false">
<shape>
<solid
android:color="#859dbc" />
<stroke
android:width="1dp"
android:color="#859dbc" />
<corners
android:radius="2dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
</selector>
Класс деятельности:
final ToggleButton price_button = (ToggleButton)findViewById(R.id.price_activate_button);
price_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(price_button.isChecked()){
Toast.makeText(getApplicationContext(), "You have chosen: Yes", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "You have chosen: No", Toast.LENGTH_LONG).show();
}
}
});