Stack Overflow em Português Asked on November 15, 2021
Eu gostaria de além de meu botão ter uma borda inferior mais que tivesse os estados do botão a exemplo pressionado, não pressionado seria outra cor…
Eu estou tentando fazer tudo isso no meu xml do drawable para setar um background para meu botão. Segue xml do drawable:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#362E2E" />
</shape>
</item>
<item android:bottom="3dp" >
<shape android:shape="rectangle">
<solid android:color="#2a5aa4" />
</shape>
</item>
<selector >
<!-- pressed -->
<item android:drawable="@android:color/transparent" android:state_pressed="true"/>
<!-- focused -->
<item android:drawable="#362E2E" android:state_focused="true"/>
<!-- default -->
<item android:drawable="#362E2E"/>
</selector>
Como posso fazer isso?
Para adicionar a borda no botão tem uma tag chamada stroke e para que haja apenas a borda inferior, é preciso negativar os atributos top, right e left da tag item.
O drawable ficaria assim:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:bottom="-10dp" android:left="-10dp" android:right="-10dp">
<shape android:shape="rectangle">
<solid android:angle="270" android:color="#a0e1" />
<stroke android:width="10dp" android:color="#5c3708" />
</shape>
</item>
</layer-list>
</item>
<item android:state_enabled="true">
<layer-list>
<item android:left="-10dp" android:right="-10dp" android:top="-10dp">
<shape android:shape="rectangle">
<solid android:angle="270" android:color="#a0a67637" />
<stroke android:width="10dp" android:color="#5c3708" />
</shape>
</item>
</layer-list>
</item>
</selector>
Answered by Natan Felipe on November 15, 2021
Uma maneira seria fazer programaticamente. Exemplo:
private boolean isChecked
Alterar a cor do botão quando for clicado
button_1 = (Button) view.findViewById(R.id.button_1);
button_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(isChecked == true){
button_1.setBackgroundColor(getResources().getColor(R.color.color_1));
isChecked = false;
}else {
button_1.setBackgroundColor(getResources().getColor(R.color.color_2));
isChecked = true;
}
}
});
Answered by Edson Reis on November 15, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP