如何在android studio中按钮按钮上更改Button的颜色

时间:2016-05-27 07:48:03

标签: android

我创建了一个Button b,背景颜色为黑色。当我点击它时,我希望它的颜色只有在我手指上的时候变为绿色,即我一直专注于它。

4 个答案:

答案 0 :(得分:5)

在按钮中使用选择器。

<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" android:layout_width="fill_parent"
    android:gravity="center" android:focusable="true"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:background="@android:drawable/list_selector_background" />

这里是list_selector_background XML的代码:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/green"/> <!-- pressed -->
    <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused -->
    <item android:drawable="@color/black"/> <!-- default -->
</selector>

答案 1 :(得分:2)

当用户按下按钮(ACTION_DOWN)和用户释放按钮时(ACTION_UP),你需要使用onTouchListener来监听

b.setOnTouchListener(new OnTouchListener() { 

public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_UP) {
       // reset the background color here
        b.setBackgroundColor(Color.GREEN);

    }else{ 
       // Change the background color here 
        b.setBackgroundColor(Color.RED);

    } 
    return false; 
   } 
}); 

答案 2 :(得分:0)

  

ACTION_UP - &gt;按下的手势已经完成,动作包含了   最终发布位置以及自此以来的任何中间点   最后一次或移动事件。

     

ACTION_DOWN - &gt;一个按下的手势已经开始,动作包含了   初始起始位置。

您应该在按钮上设置 OnTouchListener

button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            btn.setBackgroundColor(getResources().getColor(R.color.colorAccent));
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            btn.setBackgroundColor(getResources().getColor(R.color.white));
        }
    }
};

检查motion events

答案 3 :(得分:0)

使这个xml可绘制并用作按钮的背景。

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