在我的应用程序中,我只是尝试将按钮的背景可绘制更改为另一个具有非常相似的形状和黄色背景(这意味着已按下按钮)。 我不认为我可以使用选择器来执行此操作,因为按钮(实际上我有多个按钮)必须随着时间的推移处理多次点击,因此对我来说最好的选择是在代码中执行此操作。
然而,当单击按钮时,背景会按预期更改为黄色,但它会立即返回白色(默认背景可绘制),即使我希望它保持黄色背景,直到我将其设置回默认值。
有什么问题?也许选择器(我没有设置它)?
Java代码
myVisibility = false;
myHighlighting = false;
myContext = context;
//noinspection Convert2Lambda
myOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!myVisibility && !myHighlighting) {
discoverLetterButton();
} else if (myVisibility && !myHighlighting) {
/*other code, not important
word += myCharacter;
WordTextView.setText(word);*/
/*here is the problem: the following line is executed but then the button immediately returns to the default drawable. */
v.setBackgroundDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.letter_button_front_highlighted, null));
//myButton.setClickable(false);
}
}
};
myButton.setOnClickListener(myOnClickListener);
myButton.setClickable(true);
letter_button_front.xml(默认背景)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="7dp"
/>
<solid
android:color="#ffffff" //White
/>
<stroke
android:width="3dp"
android:color="#000000"
/>
</shape>
letter_button_front_highlighted.xml(我正在设置的形状)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="7dp"
/>
<solid
android:color="#ffffb32f" //Orange-yellow
/>
<stroke
android:width="3dp"
android:color="#000000"
/>
</shape>
提前感谢您的帮助!