在Android中释放按钮时,按钮颜色不应更改

时间:2010-10-07 18:15:31

标签: android

                                                                                         

<item android:state_focused="true" > 
    <shape> 
        <gradient 
            android:endColor="#FF9900" 
            android:startColor="#FF9966" 
            android:angle="270" /> 
        <stroke 
            android:width="3dp" 
            android:color="#CCCCCC" /> 
        <corners 
            android:radius="3dp" /> 
        <padding 
            android:left="10dp" 
            android:top="10dp" 
            android:right="10dp" 
            android:bottom="10dp" /> 
    </shape> 
</item> 

   <item>         
    <shape> 
        <gradient 
            android:endColor="#FFFFFF" 
            android:startColor="#FFFFFF" 
            android:angle="270" /> 
        <stroke 
            android:width="1dp" 
            android:color="#666666" /> 
        <corners 
            android:radius="1dp" /> 
        <padding 
            android:left="3dp" 
            android:top="3dp" 
            android:right="3dp" 
            android:bottom="3dp" /> 
    </shape> 
</item> 

以上是我用黑色填充Button边框的代码。我通过设置为background来使用3个按钮的相同代码。现在,当我点击button1时,红色会出现,当我发布时会出现。但我希望红色可见,直到我按下一个按钮。虽然我按下后会释放Button1,但应该可以看到红色。但是当我按下任何其他按钮时,红色应该只会消失。
  任何人都可以帮我解决这个问题吗? 请有人帮我解决这个问题吗?
在此先感谢,

2 个答案:

答案 0 :(得分:0)

尝试为android:state_selected

添加状态

答案 1 :(得分:0)

我担心你无法通过定义按钮状态的xml来完成你的目标。因为,AFAIK没有定义按钮行为的状态(正常,聚焦和按下)。假设正常状态。

但是,您可以执行以下操作:

  • 让我们说你原来的xml drawable是可绘制的A
  • 定义新的xml drawable B,其正常状态定义为所需的红色按钮
  • 用户按下按钮后会显示红色,因为可绘制的A表示
  • 当用户释放按钮时,确保通过更改可绘制

    使其保持红色

    myButton.setBackgroundDrawable(getResources()getDrawable(R.drawable.B));

  • 当用户按下另一个按钮时,通过

    将其恢复为正常状态

    myButton.setBackgroundDrawable(getResources()getDrawable(R.drawable.A));