1

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

myView.setOnClickListener(new OnClickListener() {

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


            }
        });

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

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

提前致谢 !

编辑:

OnTouchListener做同样的事情。我想我需要类似的东西onReleaseListener

4

4 回答 4

3

为此,您需要使用onTouchListener=>文档

请参阅本教程以了解如何使用它。

例子:

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;
        }
    }    
于 2013-11-12T14:35:30.913 回答
2

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>

检查文档

于 2013-11-12T14:37:18.000 回答
0

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

于 2013-11-12T14:37:49.227 回答
0

您不需要采用这种复杂的方法来捕获“点击”事件。仅针对此方法:-

//当然是在触摸监听器内部:-

科特林:-

    if(event.action == MotionEvent.ACTION_UP && event.action != MotionEvent.ACTION_MOVE) {
// Click has been made...
// Some code
}

JAVA :- 只需将 event.action 替换为 event.getAction()

这对我有用

于 2021-08-18T09:42:03.460 回答