我有一个TextView,有一个onLongClickListenerOnClick事件,保持TextView时,它的颜色变为红色,释放时,它的颜色应该变为白色。
问题:
当我握住TextView并在握住时将手指移到其外部,然后离开手指时,其颜色不会变为白色。
XML格式

<TextView
    android:layout_width="match_parent"
    android:text="hello"
    android:textColor="#ffff"
    android:id="@+id/timer"
    android:layout_height="wrap_content"
    />

爪哇
final TextView t1 = (TextView) findViewById(R.id.timer);
    t1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            t1.setTextColor(Color.WHITE);

        }
    });
    t1.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            t1.setTextColor(Color.RED);
            return false;
        }
    });

最佳答案

View.OnClickListener-单击视图时要调用的回调的接口定义。
View.OnLongClickListener-单击并保持视图时要调用的回调的接口定义。
所以你说的是百分之百正确的。它应该是红色的,因为它被点击并保持你的方式。
但当我拿着文本视图并将手指移到文本视图之外时
握着,然后离开我的手指,它不会改变它的颜色
白色
当文本视图只被单击时,您已经将其设置为白色!!如果您想获得您所说的白色(单击并按住),则需要在OnLongClickListener中设置白色
如果要检测视图,请触摸并释放并更改与之相关的颜色,则需要使用OnTouchListener而不是单击侦听器
View.OnTouchListener-在将触摸事件发送到此视图时要调用的回调的接口定义。在将touch事件提供给视图之前将调用回调

       t1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch ( event.getAction() ) {
                case MotionEvent.ACTION_DOWN:
                    t1.setTextColor(Color.RED); // pressed state
                 break;

                case MotionEvent.ACTION_UP:
                    t1.setTextColor(Color.WHITE); // Released state
                 break;
            }
            return true;
        }
    });

10-06 14:53