如何在点击屏幕的任何位置隐藏晶圆厂?

时间:2015-10-01 10:12:43

标签: android floating-action-button

我正在使用Floating Action Button。我正在使用这个库,因为我需要收件箱风格的工厂。问题是,我只能在点击底部工厂时关闭浮动操作菜单。我需要的是,如果我点击屏幕上的任何其他位置,那么工厂也应该像收件箱应用程序中那样崩溃。如何实现这种行为?我可以使用这个库中的任何属性,或者我需要自己实现该行为吗?

4 个答案:

答案 0 :(得分:11)

该库有一个方法setClosedOnTouchOutside(boolean close),你可以使用它。

floatingActionMenu.setClosedOnTouchOutside(true);

答案 1 :(得分:1)

如果您使用compile 'com.getbase:floatingactionbutton:1.8.0'

并且有浮动的动作菜单,并且想要在点击屏幕上的任何地方后关闭菜单试试这个

floatingActionsMenu =(FloatingActionsMenu)findViewById(R.id.fab_menu);

listView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        if (floatingActionsMenu.isExpanded())
            floatingActionsMenu.collapse();
        return false;
    }
});

false< - 使视图继续滚动

答案 2 :(得分:1)

Misho Zhghenti使用compile 'com.getbase:floatingactionbutton:1.8.0'的解决方案不正确,因为它在listView上指定了触摸事件。这是正确的实施:

@Override public boolean dispatchTouchEvent(MotionEvent event){
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        if (fabMenu.isExpanded()) {
            Rect outRect = new Rect();
            fabMenu.getGlobalVisibleRect(outRect);
            if(!outRect.contains((int)event.getRawX(), (int)event.getRawY())) {
                fabMenu.collapse();
                return false;
            }
        }
    }
    return super.dispatchTouchEvent(event);
}

在应用程序的任何位置工作,而不仅仅是listView。将它放在您的活动中。

答案 3 :(得分:0)

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN){
        if (fam_main.isOpened()){
            Rect outRect = new Rect();
            fam_main.getGlobalVisibleRect(outRect);
            if (!outRect.contains((int)event.getRawX(), (int) event.getRawY())){
                fam_main.close(true);
            }
        }
    }
    return super.dispatchTouchEvent(event);
}

***注意 fam_main是您的FAB菜单ID FloatingActionMenu