【问题标题】:Changing button background color on pressed按下时更改按钮背景颜色
【发布时间】:2013-09-02 10:46:53
【问题描述】:

我是安卓开发新手。我有一个按钮,我为其提供了如下选择器

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

通过这种方式,我可以在按下按钮和选定按钮时实现背景图像的更改,但我也想随图像一起更改背景颜色。这可能吗 ?如果是,请指导我如何实现。

【问题讨论】:

标签: android android-layout android-manifest background-image background-color


【解决方案1】:
<item android:state_pressed="true"  android:drawable="@drawable/onclick_home"> 

  <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
        <stroke android:width="4dp" android:color="#94cd00" />

        <padding android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp" />

    </shape></item>

我的 imageview 有这样的东西。当它被按下时,它会在我的 image view 之外创建一个绿色边框。看看有没有帮助

【讨论】:

    【解决方案2】:
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        if(event.getAction() == MotionEvent.ACTION_UP)
        {
            //up event
            b.setBackgroundColor(Color.RED);
            return true;
        }
        if(event.getAction() == MotionEvent.ACTION_DOWN)
        {
            //down event
            b.setBackgroundColor(Color.GREEN);
            return true;
        }
        return false;
    }
    

    【讨论】:

    • 这是选择器的实际作用,在代码中没有必要这样做。
    • 这只会给出按下状态,而不是选中状态。
    • 如果我按下视图,这也会失败,当我仍然按下时,我将手指滑离视图,现在我抬起。颜色保持不变。到 ACTION_DOWN 颜色,它不会返回到 ACTION_UP 一个