【问题标题】:Android set background color button pressed按下Android设置背景颜色按钮
【发布时间】:2014-06-28 12:49:20
【问题描述】:

我想在按下事件时更改 ImageButton 的背景颜色。

这就是我所做的:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >

    <solid android:color="@color/rose_normal" />
    <solid
        android:state_pressed="true"
        android:color="@color/rose_fonce" />

    <stroke
        android:width="1sp"
        android:color="@color/rose_fonce" />

</shape>

我的按钮在“rose_normal”颜色很好,但在按下时从来没有“rose_fonce”颜色。

问题出在哪里?

编辑:问题已解决:

创建一个名为 background_rounded_button.xml 的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/rounded_button_rose_fonce" android:state_selected="true"></item>
    <item android:drawable="@drawable/rounded_button_rose_fonce" android:state_pressed="true"></item>
    <item android:drawable="@drawable/rounded_button_rose_normal"></item>

</selector>

rounded_button_rose_fonce.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >

    <solid android:color="@color/rose_fonce" />

    <stroke
        android:width="1sp"
        android:color="@color/rose_fonce" />

</shape>

rounded_button_rose_normal.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >

    <solid android:color="@color/rose_normal" />

    <stroke
        android:width="1sp"
        android:color="@color/rose_fonce" />

</shape>

最后,为按钮应用背景:

 <ImageButton
        android:id="@+id/all_annonce_button_search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="10dp"
        android:layout_marginRight="10dp"
        android:background="@drawable/background_rounded_button.xml"
        android:padding="16dp"
        android:src="@drawable/ic_action_search" />

【问题讨论】:

    标签: android selector android-imagebutton android-shape


    【解决方案1】:

    问题在于您使用的不是选择器,而是形状。

    试试这个代码(button_selector.xml,把它放在你的drawable文件夹中):

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:drawable="@color/rose_fonce" android:state_selected="true"></item>
        <item android:drawable="@color/rose_fonce" android:state_pressed="true"></item>
        <item android:drawable="@color/rose_normal"></item>
    
    </selector>
    

    当将此选择器设置为作为Button 的背景时,它在正常状态下将具有“rose_normal”颜色,在按下或选择时将具有“rose_fonce”颜色。

    例子:

    <Button
        android:background="@drawable/button_selector" />
    

    【讨论】:

    • 谢谢,它工作得很好,但我的按钮的椭圆形状丢失了。我怎样才能重新添加这个椭圆?
    • @wawanopoulos,尝试设置您自定义的两个椭圆形图像而不是颜色。
    猜你喜欢
    • 2015-04-06
    • 2013-08-06
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多