如何取消FloatingActionButton的按下状态后,移动手指的区域



最近我更新了支持设计库到24.2.0。我发现在这个版本中,对于任何FloatingActionButton,如果我长按它,然后将手指移出它的区域,它仍然会保持按下状态(显示波纹颜色并保持较大的高度)。我怎样才能让它回到正常状态呢?

这是我的FloatingActionButton的一个例子:

<android.support.design.widget.FloatingActionButton
    android:layout_width="56dp"
    android:layout_height="56dp"
    android:layout_gravity="bottom|end"
    android:scaleType="center"
    android:src="@drawable/act_add"
    app:elevation="6dp"
    app:borderWidth="0dp"
    app:pressedTranslationZ="12dp"/>

似乎是设计支持库的问题。Android漏洞在https://code.google.com/p/android/issues/detail?id=218956上被打开,并提交了几个解决方案。以下是我在onCreate内部使用的另一个解决方案(其中fabFloatingActionButton),在释放触摸时取消按下状态:

fab.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(final View view, MotionEvent motionEvent) {
            int action = motionEvent.getAction() & MotionEvent.ACTION_MASK;
            if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
                view.post(new Runnable() {
                    @Override
                    public void run() {
                        view.setPressed(false);
                    }
                });
            }
            return false;
        }
    });

(在某些情况下,直接在处理程序中调用setPressed(false)会导致click事件不触发)

相关内容

  • 没有找到相关文章

最新更新