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

时间:2010-09-16 19:48:32

标签: android button coding-style pressed

当按下按钮时,有没有办法将样式应用于按钮?

如果我在 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"/>

谢谢!

7 个答案:

答案 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"