Android 更改所单击按钮的图像背景,并在再次单击时将其恢复为原始状态

Android 更改所单击按钮的图像背景,并在再次单击时将其恢复为原始状态,android,button,Android,Button,我班上有一系列按钮,如下所示: 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.b

我班上有一系列按钮,如下所示:

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\u单击的
,如果存在类似的东西

PS:我在这里检查了其他答案,但大多数答案都只是java类中的颜色更改器,我希望在单击时更改背景图像(到btnew2.gif),并在再次单击时返回到原始图像(btnew.gif)


请建议合适的解决方案。

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

Class MyButton extends Button implememts OnClickListener{

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


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

}

}

这不是确切的代码……而是一个抽象的想法。您可以通过制作自己的自定义按钮来实现

Class MyButton extends Button implememts OnClickListener{

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


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

}

}

这不是确切的代码……而是一个抽象的想法。正如Niels Masdorp所提到的,你可以通过切换按钮来实现

这是因为有一个状态标识符称为“可检查的状态”,类似于“可单击的状态”,它与“可检查的状态”界面一起工作<代码>切换按钮实现此界面。您还可以创建自己的小部件来实现此接口,例如扩展
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>

另见:

  • 可检查的
  • 自定义可检查小部件上的一个示例

正如尼尔斯·马斯多普所提到的,您可以通过
切换按钮来实现

这是因为有一个状态标识符称为“可检查的状态”
,类似于“可单击的状态”,它与“可检查的状态”界面一起工作<代码>切换按钮实现此界面。您还可以创建自己的小部件来实现此接口,例如扩展
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>

另见:

  • 可检查的
  • 自定义可检查小部件上的一个示例

您可以通过编程实现,但使用
切换按钮是否更有意义?是的,正如Niels所说,使用design modified
切换按钮将更有意义。看看这个,实际上我还设置了一个
TextView
onClick按钮,它在几秒钟后显示和隐藏。可以使用
ToggleButton
?是的,它是:ToggleButton是一个TextView,因此它具有TextView的所有方法(setOnClickListener实际上来自视图)。我发布了一个简单的用法示例。我按照建议使用了切换按钮,但是切换按钮上的文本显示为开和关,而我的文本设置没有显示。切换按钮。setText(null)也不起作用。。如何打开和关闭切换按钮文本您可以通过编程实现,但使用
ToggleButton
是否更有意义?是的,正如Niels所说,使用design modified
ToggleButton
更有意义。看看这个,实际上我还设置了一个
TextView
onClick按钮,它在几秒钟后显示和隐藏。可以使用
ToggleButton
?是的,它是:ToggleButton是一个TextView,因此它具有TextView的所有方法(setOnClickListener实际上来自视图)。我发布了一个简单的用法示例。我按照建议使用了切换按钮,但是切换按钮上的文本显示为开和关,而我的文本设置没有显示。切换按钮。setText(null)也不起作用。。如何打开和关闭切换按钮文本