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> 

  • Android:加速活动之间的共享元素转换
  • Android多点圆形范围栏控件
  • 如何创build用户界面,如附图所示
  • 摆脱Activity(Android)顶部的渐变
  • Nexus 7上的Android 4.2:canvas.drawText()无法正常工作
  • 制作一个像Android应用程序的向导
  • ListFragment在ListView或普通片段上的优势
  • Android - 工具栏的标准高度
  • 只要使用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);