按形状设置渐变背景时按钮的按压效果丢失

时间:2011-05-16 14:27:17

标签: android

通常,按下按钮会有一点效果。但是当我通过创建形状border.xml设置按钮的渐变背景时:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke android:width="1px" android:color="#cccccc" />
    <corners android:radius="6px" />
    <gradient
      android:startColor="#d8d8d8"
      android:endColor="#f9f2f9"
      android:angle="90" /> 
</shape>

和按钮:

        <Button
        android:id="@+id/visibility"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:drawableLeft="@drawable/idle"
        android:singleLine="true"           
        android:padding="5px"
        android:textSize="14px"
        android:textColor="#444444"
        android:textStyle="bold"
        android:typeface="sans"
        android:layout_marginLeft="5px"
        android:layout_marginRight="5px"    
        android:background="@drawable/border"
        android:clickable="true">
    </Button>

按下按钮时的效果,按钮现在就像文本视图一样,点击它时没有任何改变。 但是如果我在按钮中删除这一行,一切都没问题:

android:background="@drawable/border"

所以任何解决方案都不会在按下按钮时失去效果,或任何解决方案使按钮具有边框和渐变背景而没有使用形状? 谢谢!

1 个答案:

答案 0 :(得分:2)

你必须使用StateListDrawable作为按钮背景,为每个状态提供不同的背景图像(按下,聚焦等)。

根本不更改按钮背景会简单得多。