2016-03-04 2 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> 

Go Простой для тестирования и попробовать это:

btnEstoque.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     btnEstoque.setEnabled(false); 
    } 
}); 
+0

Да друг. Это. – Elder

+0

обновил мой ответ –

+0

Все еще не работал друг. – Elder

Смежные вопросы