当按下按钮时,有没有办法将样式应用于按钮?
如果我在 style.xml 中有样式:
<resources>
<style name="test">
<item name="android:textStyle">bold</item>
</style>
</resources>
button.xml 中的选择器:
<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"/>
谢谢!
答案 0 :(得分:7)
Romain Guy建议不可能:
http://code.google.com/p/android/issues/detail?id=8941
“选择器仅适用于绘图,而不适用于文本外观 目前还不打算实现这一目标。“
答案 1 :(得分:5)
您可以使用XML按钮定义来实现此目的。
在drawable文件夹中创建一个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>
正如您所看到的,这允许您定义用于不同状态的不同按钮图像(black_button,green_button等也应该是可绘制文件夹中的.PNG文件)
现在,您可以从layout.xml文件中将按钮背景设置为指向按钮选择器:
<Button android:text="Play" android:id="@+id/playBtn"
android:background="@drawable/button_selector"
android:textColor="#ffffff" />
然后可以像任何图像文件一样从可绘制文件夹中引用选择器XML。
答案 2 :(得分:2)
您可以使用Color State List Resource
链接示例:
保存在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将颜色列表应用于视图:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
答案 3 :(得分:1)
在点击/按颜色时更改Android按钮:
定义颜色值
要定义颜色值,您必须在项目值目录中创建colors.xml文件并添加以下内容。 RES /值/ colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="button_pressed">#ff8a00</color>
<color name="button_focused">#ff8a00</color>
<color name="button_default">#1c76bb</color>
</resources>
在可绘制目录中创建XML文件
在drawable文件夹中创建一个button_background.xml文件,并添加按下/单击,聚焦和默认颜色的按钮。 button_background.xml文件的最终代码如下所示。 RES /抽拉/ button_background.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="@color/button_pressed"/> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@color/button_focused"/> <!-- focused -->
<item android:drawable="@color/button_default"/> <!-- default -->
</selector>
添加按钮
RES / activity_main.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/button_background"
android:text="Click Me"
android:textColor="#fff" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button1"
android:layout_marginTop="16dp"
android:background="@drawable/button_background"
android:text="Click Me"
android:textColor="#fff" />
</RelativeLayout>
来源here。
答案 4 :(得分:0)
<Button
android:background="@drawable/button"/>
答案 5 :(得分:0)
要引用选择器,您必须将其作为该按钮的背景。
<Button
android:background="@drawable/button"
/>
对于Bold,当我按下时,我也没有尝试过,但也许你可以在你的选择器中提到文字样式,i.s.o引用它的风格:
android:textStyle="bold"
如果这也不起作用,你可以在按钮的onClick()中进行。
答案 6 :(得分:-3)
我没试过,但可能你只能在选择器中加入android:id="button"
。