当我在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表示
- 当用户释放按钮时,确保通过改变可拉丝的颜色使其保持红色
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>
<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。请给我任何其他解决方案