2016-03-04 89 views
1

我已經在這裏做了深入的研究,並嘗試了很多沒有成功的事情。這裏是我的代碼: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

嘗試增加:'<項目機器人:可繪製=「@ drawable/drawable_id「android:state_enabled =」true「>' –

+0

感謝朋友,但沒有工作。 – Elder

回答

0

取出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

0

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

0

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