当我在Android中释放按钮时,按钮颜色不应该改变

当我在Android中释放按钮时,按钮颜色不应该改变,android,Android,<item android:state_focused="true" > <shape> <gradient android:endColor="#FF9900" android:startColor="#FF9966" android:angle="270" /> <stroke android:widt

<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> 

上面是我为用黑色填充按钮边框而编写的代码。通过设置为背景,我在3个按钮上使用了相同的代码。现在,当我单击button1时,红色显示,当我释放时,红色消失。但我希望红色是可见的,直到我按下下一步按钮。虽然按下按钮后我松开了按钮1,但红色应该是可见的。但红色只有在我按下其他按钮时才会消失。
有人能帮我解决这个问题吗?
有人能帮我解决这个问题吗

提前感谢,

请尝试为android:state\u selected添加一个状态。我担心,仅仅通过定义按钮状态的xml无法完成您的目标。因为,AFAIK没有定义按钮释放后的行为的状态(只是正常、聚焦和按下)。假设为正常状态

<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> 
但是,您可以执行以下操作:

<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> 
  • 假设您的原始xml是可绘制的
  • 定义新的xml可绘制B,其正常状态定义为红色按钮
  • 用户按下按钮后,它将变为红色,因为可绘制的A表示
  • 当用户释放按钮时,确保通过改变可拉丝的颜色使其保持红色

    <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> 
    
    myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.B))

  • <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> 
    
  • 当用户按下另一个按钮时,通过

    <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> 
    
    myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.A))

  • <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> 
    

为什么不使用
切换按钮
?android:state\u selected无效。我在android中添加了一个单独的标签:state_pressed。请给我任何其他解决方案