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

这可能是一些生命周期问题吗?该按钮变为所需的图像,但稍后返回到原稿。

+0

尝试增加:'' –

+0

感谢朋友,但没有工作。 – Elder

取出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); 
    } 
}); 
+0

是的朋友。它是。 – Elder

+0

更新了我的答案 –

+0

还没有工作的朋友。 – Elder