我创建了一个Button b
,背景颜色为黑色。当我点击它时,我希望它的颜色只有在我手指上的时候变为绿色,即我一直专注于它。
答案 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));
}
}
};
答案 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>