Android按钮选择并按下drawable
Posted
技术标签:
【中文标题】Android按钮选择并按下drawable【英文标题】:Android button select and press drawable 【发布时间】:2012-11-06 18:27:11 【问题描述】:我正在尝试制作一个状态为按下并选择的按钮, 我已经对标签做了同样的事情,它可以工作,但我不知道为什么这里不起作用。 我是这样做的:
button_sel.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="@color/azulado"
android:endColor="@color/azulBrillante"
android:angle="270" />
<corners android:radius="@dimen/corner_radius" />
<stroke android:
android:color="@color/blanco" />
</shape>
button_unsel.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="@color/botonesD"
android:endColor="@color/botones"
android:angle="270" />
<corners android:radius="@dimen/corner_radius" />
<stroke android:
android:color="@color/blanco" />
</shape>
还有选择器,button.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_sel"
android:state_selected="true"
android:state_pressed="true"/>
<item android:drawable="@drawable/button_unsel"
android:state_selected="false"
android:state_pressed="false"/>
</selector>
这里我把drawable称为背景:
<style name="button">
<item name="android:background">@drawable/button</item>
<item name="android:textSize">@dimen/text_size</item>
<item name="android:padding">@dimen/padding_button</item>
<item name="android:textColor">@color/blanco</item>
</style>
谢谢!!!!
【问题讨论】:
【参考方案1】:选择器中的第一项仅在按下并选择按钮时使用。如果您想在按下或选择按钮时使用button_sel
,您应该执行以下操作:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_sel" android:state_selected="true" />
<item android:drawable="@drawable/button_sel" android:state_pressed="true" />
<item android:drawable="@drawable/button_unsel" />
</selector>
项目从上到下评估,最后一个是默认值。虽然我不确定 state_selected 是否对按钮有意义。
【讨论】:
【参考方案2】:可以使用形状内联项。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape....>
</item>
<item android:state_selected="true" >
<shape....>
</item>
<item android:state_pressed="true" android:state_selected="true" >
<shape...>
</item>
</selector>
示例:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" >
<shape
android:shape="rectangle">
<gradient android:startColor="@color/md_amber_300"
android:endColor="@color/md_amber_50"
android:angle="270" />
<corners android:radius="@dimen/fab_margin" />
<stroke android:
android:color="@color/primaryColorDark_orange" />
</shape>
</item>
<item android:state_pressed="true" >
<shape
android:shape="rectangle">
<gradient android:startColor="@color/md_amber_300"
android:endColor="@color/md_amber_50"
android:angle="270" />
<corners android:radius="@dimen/fab_margin" />
<stroke android:
android:color="@color/primaryColorDark_orange" />
</shape>
</item>
<item android:state_pressed="true" android:state_selected="true" >
<shape
android:shape="rectangle">
<gradient android:startColor="@color/md_teal_500"
android:endColor="@color/md_blue_400"
android:angle="270" />
<corners android:radius="@dimen/fab_margin" />
<stroke android:
android:color="@color/md_amber_A400" />
</shape>
</item>
</selector>
【讨论】:
以上是关于Android按钮选择并按下drawable的主要内容,如果未能解决你的问题,请参考以下文章
一旦选择并按下 QButton,如何从 QListWidget 对象中获取项目作为字符串