Android - 无法更改按钮状态背景更改
问题描述:
我已经在这里做了深入的研究,并尝试了很多没有成功的事情。这里是我的代码:Android - 无法更改按钮状态背景更改
btn_estoque.xml
<item android:drawable="@drawable/estoque_menu_ativo" android:state_enabled="false"></item>
<item android:drawable="@drawable/estoque_menu" android:state_pressed="false"></item>
<item android:drawable="@drawable/estoque_menu_ativo" android:state_pressed="true"></item>
按钮代码:
<Button
android:id="@+id/estoque_menu"
android:background="@drawable/btn_estoque"
android:layout_width="@dimen/tab_button_width"
android:layout_height="@dimen/tab_button_height"
style="?android:attr/buttonBarButtonStyle"
android:contentDescription="@null"
android:onClick="estoqueClick"/>
在类:
public void estoqueClick(View v) {
btnEstoque.setEnabled(false);
Intent intent = new Intent(v.getContext(), EstoqueActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
}
我缺少什么?当我点击按钮时,图像仅在按下按钮时才改变。
EDITED
这可能是一些生命周期问题吗?该按钮变为所需的图像,但稍后返回到原稿。
答
取出state_pressed假的,有这样的XML:
<item android:drawable="@drawable/estoque_menu_ativo" android:state_enabled="false"></item>
<item android:drawable="@drawable/estoque_menu"></item>
<item android:drawable="@drawable/estoque_menu_ativo" android:state_pressed="true"></item>
+0
没有工作,因为中间行使最后一行无法访问。然后,我把它放在最后的位置,并没有工作。 – Elder
答
btn_estoque.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/estoque_menu_ativo" />
<item android:state_focused="true" android:drawable="@drawable/estoque_menu" />
<item android:drawable="@drawable/estoque_menu" />
</selector>
和Button
XML代码中使用此
android:background="@drawable/btn_estoque"
+0
谢谢你的朋友,但没有工作。 – Elder
答
是btn_estoque.xml
即使选择器可绘制?
可能是矫枉过正,但试试你的选择更改为此:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/estoque_menu_ativo"/>
<item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/estoque_menu_ativo"/>
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/estoque_menu_ativo"/>
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/estoque_menu_ativo"/>
<item android:state_activated="true" android:drawable="@drawable/estoque_menu_ativo"/>
<item android:state_active="true" android:drawable="@drawable/estoque_menu_ativo"/>
<item android:state_pressed="true" android:drawable="@drawable/estoque_menu_ativo"/>
<item android:drawable="@drawable/estoque_menu"/>
</selector>
过简单的为您的测试和尝试这个办法:
btnEstoque.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btnEstoque.setEnabled(false);
}
});
尝试增加:'' –
感谢朋友,但没有工作。 – Elder