如何检测android中是否完成了click事件?

时间:2013-11-12 14:32:54

标签: android event-handling touch onclicklistener android-event

我动态创建视图,我正常处理他们的点击事件,如下所示:

myView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                v.setBackgroundColor(0xaaffffff);


            }
        });

但是此代码不处理onRelease事件,因此点击后视图仍为白色背景。

那么当点击状态结束时,如何将背景设置为另一个值?

提前致谢!

编辑:

OnTouchListener做同样的事情。我想我需要像onReleaseListener这样的东西?

3 个答案:

答案 0 :(得分:3)

为此您需要使用onTouchListener => documentation

请参阅此tutorial了解如何使用此功能。

示例:

myView.setOnTouchListener(
        new View.OnTouchListener() {
        public boolean onTouch(View myView, MotionEvent event) {
            int action = event.getAction();
            if (action==MotionEvent.ACTION_MOVE)
            {
                myView.setBackgroundColor(Color.BLUE);
            }
            if (action==MotionEvent.ACTION_UP)
            {
                myView.setBackgroundColor(Color.RED);
            }
            if (action==MotionEvent.ACTION_DOWN)
            {
                myView.setBackgroundColor(Color.YELLOW);
            }
            // TODO Auto-generated method stub
            return true;
        }
    }    

答案 1 :(得分:1)

Android有一个选择器。在可绘制文件夹的xml文件中定义它并将其用作背景:

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

    <item android:state_pressed="false" android:drawable="@drawable/YOURDRAWABLE" />           

    <item android:state_pressed="true" android:drawable="@drawable/YOURDRAWABLE_WHEN_CLICKED" />          

</selector>

检查DOCUMENTATION

答案 2 :(得分:0)

状态列表适用于状态更改的样式更新。看一下这个。 http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList