2012-02-22 28 views
0

所以我有一个图像按钮,我想在它上面有两个状态。它将像书签按钮那样工作,它有两种状态。如果用户按下按钮,则它会更改图像,如果它再次按下该按钮,则我需要返回原始图像。什么样的按钮可以在Android中切换/更改状态?

这可能吗?有没有更简单的方法使用另一种类型的按钮? 谢谢

+2

友好的建议:为您的问题添加一些更多的细节。特别是,标题有点混乱。 – 2012-02-22 21:31:41

+0

尝试使用您自己的自定义CSS的按钮? – uday 2012-02-22 21:32:55

+0

对不起大家..修改标题 – 2012-02-22 21:50:58

回答

2

尝试将主题更改为:“什么样的按钮可以切换/更改状态?”

好像你需要ToggleBotton

<ToggleButton     
     android:layout_width="wrap_content" 
     android:layout_height="26dp" 
     android:background="@color/button_colors" 
     android:button="@null" 
     android:textOff="@null" 
     android:textOn="@null" /> 

而这个XML定义的颜色/在休息/按下状态按钮的图片,把它放在res/color/button_colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_checked="false" android:drawable="@drawable/button_rest"/> 
<item android:state_checked="true" android:drawable="@drawable/button_on" />  
</selector> 
+0

谢谢。所以在那之后,我只需要附加一个监听器并设置操作。我可以获得按钮的状态?并根据我可以执行的操作。 – 2012-02-28 01:26:02

0

是的,你可以使用普通的按钮也。首先在res/drawable目录中创建一个选择器XML文件。例如:

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

<item android:state_enabled="true" android:state_selected="true" 
android:drawable="@drawable/selectedimage"/> 

<item android:state_enabled="true" android:state_selected="false" 
android:drawable="@drawable/notselectedimage"/> 

</selector> 

在布局XML按钮定义,你只需要添加这个属性:

android:background="@drawable/myselectorxmlfile" 

然后你编程设置选择的状态自己(在onClickListener)和按钮图像会改变背景状态。

button.setSelected(true) // or false; 
0

我想你可以使用切换按钮,并希望它会解决您的问题。 只要看看它的一个简单的XML代码:

<ToggleButton 
       android:id="@+id/tglbtn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textOn="ON" 
       android:textOff="OFF" 
       /> 

,只是检查在这个环节在这里给出了答案: Android: Specify two different images for togglebutton using XML

此外, 我已经张贴有关切换按钮的简单教程。只要看看我的谦虚博客,如果你觉得它有帮助。这里是链接:http://androiddesk.wordpress.com/2012/03/10/toggle-button-in-android/