按下时将不同的样式应用于button

button按下时,有没有办法将样式应用到button?

如果我在style.xml中有一个样式:

<resources> <style name="test"> <item name="android:textStyle">bold</item> </style> </resources> 

button.xml中的select器:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/test_pressed" style="@style/test" android:state_pressed="true"/> <item android:drawable="@drawable/test_focused" android:state_focused="true"/> <item android:drawable="@drawable/test_normal"/> </selector> 

那么我怎么会参考我的布局button.xml

 <Button ... android:???="button"/> 

谢谢!

罗曼·盖伊认为这是不可能的:

http://code.google.com/p/android/issues/detail?id=8941

“select器只能用于绘图,而不能用于文本显示,目前还没有计划要做到这一点。”

您可以通过使用XMLbutton定义来实现此目的。

在您的可绘制文件夹中创build一个XML文件,如下所示:

 <?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/green_button" /> <!-- <item android:state_focused="true" android:drawable="@drawable/button_focused" /> --> <item android:drawable="@drawable/black_button" /> </selector> 

正如你所看到的,这允许你定义不同的button图像用于不同的状态(black_button,green_button等也应该是你的drawable文件夹中的.PNG文件)

现在,从layout.xml文件中,您可以将button背景设置为指向buttonselect器:

 <Button android:text="Play" android:id="@+id/playBtn" android:background="@drawable/button_selector" android:textColor="#ffffff" /> 

Selector XML可以像任何图像文件一样从可绘制的文件夹中引用。

您可以使用颜色状态列表资源

链接示例:

保存在res / color / button_text.xml中的XML文件:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#ffff0000"/> <!-- pressed --> <item android:state_focused="true" android:color="#ff0000ff"/> <!-- focused --> <item android:color="#ff000000"/> <!-- default --> </selector> 

这个布局XML将把颜色列表应用到一个View:

 <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/button_text" android:textColor="@color/button_text" /> 
 <Button android:background="@drawable/button"/> 

要引用select器,您必须将其作为该Button的背景。

 <Button android:background="@drawable/button" /> 

而按下Bold时,我还没有尝试过,但是也许你可以在select器中提到文本样式,iso指的是它的样式:

 android:textStyle="bold" 

如果这也不起作用,你可以在button的onClick()中做。

我还没有尝试过,但大概你可以在你的select器中包含android:id="button"