Androidbutton以编程方式在Java中声明(不是XML)

如何在Java中为“state_pressed”“android:state_focused”定义Androidbutton图像?

例如,如何完成XML中的Java等价物

http://developer.android.com/reference/android/widget/ImageButton.html

<?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/button_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused --> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector> 

Solutions Collecting From Web of "Androidbutton以编程方式在Java中声明(不是XML)"

只要使用StateListDrawable的addState方法

 StateListDrawable stateListDrawable = new StateListDrawable(); stateListDrawable.addState(new int[] {android.R.attr.state_pressed}, getResources().getDrawable(R.drawable.phone)); 

你可以使用下面的常量来表示这个方法的第一个参数

 android.R.attr.state_accelerated android.R.attr.state_activated android.R.attr.state_active android.R.attr.state_drag_can_accept android.R.attr.state_drag_hovered android.R.attr.state_enabled android.R.attr.state_first android.R.attr.state_focused android.R.attr.state_hovered android.R.attr.state_last android.R.attr.state_middle android.R.attr.state_pressed android.R.attr.state_selected android.R.attr.state_single android.R.attr.state_window_focused 

创build一个StateListDrawable的实例,然后用imagebutton.setImageDrawable(stateDrawable)赋值。

10倍到唐克,我使用这个不同的列表项目颜色白色select颜色。

选中状态

 stateListDrawable.addState(new int[] {android.R.attr.state_pressed}, new ColorDrawable(getResources().getColor(R.color.alpha_blue500))); 

默认状态

 stateListDrawable.addState(new int[] {}, new ColorDrawable(getResources().getColor(R.color.red))); 

在这里,您可以更改行项目的不同状态的颜色(例如,付费和免费)

将状态设置为列表适配器中的自定义布局行项目

 holder.relativeLayout.setBackgroundDrawable(stateListDrawable);