a regular button changes its look, when it's pressed. How can i keep this 'pressed' look on the button even after it is released?
3 Answers
Possible solution if You don´t want to use ToggleButton, is to set boolean values in onClickListener
private boolean isPressed = false;
mYourButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(){
if(isPressed==false){
mYourButton.setBackgroundResource(R.drawable.your_pressed_image);
isPressed=true;
}else if(isPressed==true){
mYourButton.setBackgroundResource(R.drawable.your_default_image);
isPressed=false;
}
}
});

- 9,800
- 2
- 36
- 49
There is someways to do it, i suggest by drawable and layouts files.
For example, you have a view where you have a "SEND" or "FINISH BUTTON", so that view in the folder layout is something like this:
<ImageButton
android:id="@+id/btnIdNext"
android:contentDescription="@string/someDescriptionOfImage"
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:src="@drawable/buttons_src"
android:background="@drawable/buttons"
android:onClick="someaction" />
As you can see you got two importants drawables, the src and the background. So, lets create that files
In the folder drawable we create the buttons_src.xml file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/finalizar_active" android:state_pressed="true"/>
<item android:drawable="@drawable/finalizar"/>
</selector>
In the folder drawable we create the buttons.xml file too
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_purple_active" android:state_pressed="true"/>
<item android:drawable="@drawable/bg_purple"/>
</selector>
what we got is four images, two for the unpressed state and two for the pressed state.
The previews next:
*Unpressed Button https://i.stack.imgur.com/UZMtt.png
*Pressed Button https://i.stack.imgur.com/1E0u4.png
You can use a ToggleButton instead of a regular one, which saves it states after it gets pressed.
just assign it a pressed and unpressed textures using a selector
, and it will save it pressed texture after you press it.

- 40,709
- 36
- 140
- 187