2016-03-05 30 views
1

我有按钮的排列在我的班级如下:更改在单击该按钮的图像背景,并把它原来的状态点击时再次

private static final int[] idArray = {R.id.bt0,R.id.bt1,R.id.bt2,R.id.bt3,R.id.bt4,R.id.bt5,R.id.bt6,R.id.bt7,R.id.bt8,R.id.bt9,R.id.bt10,R.id.bt11,R.id.bt12,R.id.bt13,R.id.bt14,R.id.bt15,R.id.bt16,R.id.bt17,R.id.bt18,R.id.bt19,R.id.bt20,R.id.bt21,R.id.bt22,R.id.bt23,R.id.bt24,R.id.bt25,R.id.bt26,R.id.bt27,R.id.bt28,R.id.bt29}; 
private Button[] bt = new Button[idArray.length]; 

,并已加入我的XML图像背景下面:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:drawable="@drawable/btnew2" android:state_selected="true"></item> 
<item android:drawable="@drawable/btnew1" android:state_pressed="true"></item> 
<item android:drawable="@drawable/btnew"></item>  
    </selector> 

现在,当我按下一个按钮的背景图像(btnew1.gif)而改变,并且恢复正常释放时。 我希望颜色被改变(它将是一个不同的图像,btnew2.gif),当一个按钮被点击时,应该返回到原来的颜色(btnew.gif)再次点击。

东西就像state_clicked如果有东西是那样的。

PS:我在这里检查其他的答案,但其中大多数是仅在Java类换色和我所期待的背景图像变化(至btnew2.gif)时点击并回到原先的图像(btnew.gif)再次点击

请建议合适的解决方案。

+1

你可以用编程的方式来做,但使用'ToggleButton'不会更有意义吗? –

+0

是的,正如Niels所说,使用设计修改后的“ToggleButton”会更有意义。看看这一个http://stackoverflow.com/questions/18335239/android-toggle-button-custom-look – Omkar

+0

实际上,我也设置了一个'TextView' onClick按钮显示并隐藏几秒钟后。这可能使用'ToggleButton'? – amit

回答

0

您可以通过制作自己的自定义按钮来实现。

Class MyButton extends Button implememts OnClickListener{ 

Public MyButton(....){ 
...... 
this.setOnClickListener(this); 
} 


@override 
Public void onClick(....){ 
....toogle bg for this button..... 

} 

} 

这不是确切的代码....但一个抽象的想法你可以做到这一点。

0

正如Niels Masdorp所说,你可以用ToggleButton来做到这一点。

这是有效的,因为有一个名为state_checkable的状态标识符,类似于state_clickable,它与Checkable接口一起工作。 ToggleButton实现这个接口。您也可以创建自己的实现此接口的小部件,例如,扩展CompoundButton(抽象)。


使用XML中的按钮:

<ToggleButton 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/toggle_bg" 
    android:textOn="On" 
    android:textOff="Off"/> 

在XML中定义的背景:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/red" android:state_checked="true"/> 
    <item android:drawable="@color/blue"/> 
</selector> 

参见:

  • The Checkabledocs
  • A tutorial关于自定义可选小部件。