自定义按钮:按下时更改样式

时间:2010-09-10 04:17:21

标签: android button coding-style state

我使用样式创建了带阴影的按钮:

<style name="test">
  <item name="android:shadowColor">#FFFFFF</item>
  <item name="android:shadowRadius">1</item>
  <item name="android:shadowDx">1</item>
  <item name="android:shadowDy">1</item>
</style>

这会在按钮文本的正常状态下应用白色阴影。我只是想知道是否有人知道当按钮处于按下状态时是否有一种方法可以移除这个阴影。换句话说,当按钮处于另一个(按下)状态时,有没有办法应用另一种样式?

提前致谢!

修改

bold.xml:

<resources>
    <style name="bold_text">
        <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/bold_text"
          android:state_pressed="true"/>
    <item android:drawable="@drawable/test_focused"
          android:state_focused="true"/>
    <item android:drawable="@drawable/test_normal"/>
</selector>

我的布局:

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

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

在审查了我的一个button.xml文件之后,我发现评估的顺序(在文档中注明了......)是我的测试选择了相同的drawable。纠正订单使其有效。

不在button2.xml的情况下。除了“drawable”和“state_ *”规范之外,我删除了所有内容。我有一个“textColor” - 看起来像XML通过其他检查(如上面的style =“..”)默默地使选择器无效。扩展验证的好地方!

Schwiz说得对......文本使用在资源目录的“color”子目录中定义的单独选择器:请参阅ColorStateList