按代码更改按钮状态

时间:2012-10-02 08:44:44

标签: android android-layout android-button

根据状态:

,这是我用来更改应用中按钮图像的xml代码
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="false"
android:drawable="@drawable/button_n" />

<item android:state_pressed="true"
android:drawable="@drawable/button_p" />

</selector>

我如何通过代码执行此操作?我试过这个:

StateListDrawable sl = new StateListDrawable();

sl.addState(new int[]{ android.R.attr.state_pressed}, R.drawable.gridcard_button_p);

但是addState将一个int数组作为第一个参数,将一个Drawable Object作为sedon一个(不是我的例子中的int)。

如何以正确的方式使用此方法?

1 个答案:

答案 0 :(得分:1)

 StateListDrawable states = new StateListDrawable();
 states.addState(new int[] {android.R.attr.state_pressed},
 getResources().getDrawable(R.drawable.pressed));
 states.addState(new int[] {android.R.attr.state_focused},
 getResources().getDrawable(R.drawable.focused));
 states.addState(new int[] { },
 getResources().getDrawable(R.drawable.normal));
 //... like this you can do for remaining
 Button.setImageDrawable(states);