2015-10-01 62 views
2

我正在使用Floating Action Button。我使用这个库是因为我需要inbox style fab。问题是,我只能在点击底部晶圆厂时关闭浮动动作菜单。我需要的是,如果我点击屏幕上的其他任何地方,那么晶圆厂应该像收件箱应用程序中发生的那样崩溃。如何实现这种行为?在这个库中是否有任何属性可以使用,或者是否需要我自己实现该行为?如何在点击屏幕上的任何位置时隐藏晶圆厂?

+0

为什么不设置其可见性Visibity.GONE?您可以将其添加到该视图上任何内容的onClick行为。 – mgokgoz

回答

9

该库有一个您可以使用的方法setClosedOnTouchOutside(boolean close)

floatingActionMenu.setClosedOnTouchOutside(true); 
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; 
    } 
}); 

假< - 使得以继续滚动

+0

你能解释一下什么是“listView”吗? –

1

御庄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。将其放置在您的活动中。

相关问题