【问题标题】:How to cancel pressed state for FloatingActionButton after moving finger out of its area?将手指移出区域后如何取消 FloatingActionButton 的按下状态?
【发布时间】:2017-01-08 02:11:54
【问题描述】:

最近我将支持设计库更新到 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"/>

【问题讨论】:

  • 浮动按钮的邮政编码。
  • @ShabbirDhangot 我添加了代码。但是,我尝试更改它的属性,然后我认为所有FloatingActionButtons 都会遇到这个问题。

标签: android android-support-library floating-action-button android-support-design


【解决方案1】:

似乎是设计支持库的问题。 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)会导致点击事件不触发)

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2017-04-23
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多