Как скрыть потрясающее нажатие в любом месте экрана?
Я использую Плавающую Кнопку Действия. Я использую эту библиотеку, потому что мне нужен потрясающий стиль inbox. Проблема в том, что я могу закрыть плавающее меню действий только при нажатии на нижнюю панель. Что мне нужно, так это то, что если я щелкну где-нибудь еще на экране, то также должно произойти свертывание, как это происходит в приложении Входящие Как добиться этого поведения? Есть ли какие-либо атрибуты в этой библиотеке, которые я могу использовать, или мне нужно реализовать это поведение самостоятельно?
3 ответа
В библиотеке есть метод setClosedOnTouchOutside(boolean close)
который вы можете использовать.
floatingActionMenu.setClosedOnTouchOutside(true);
Решение Мишо Жгенти для использования 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);
}
Работает в любом месте приложения, а не только в виде списка. Поместите это в свою деятельность.
Если вы используете 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 <- позволяет продолжить прокрутку
@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-меню FloatingActionMenu