在用户触摸时关闭 FAB 子菜单
Closing the FAB sub menu on user touch
我正在尝试实现一个可扩展的工厂,我实现了它并且它按预期工作,即当用户点击 fab_main 时,子菜单变为可见和活动,当用户点击 fab_main 子菜单再次变为不可见和非活动状态。
我的问题是,当用户点击屏幕时,我希望子菜单关闭(如果它是打开的),例如当前的 activity
我试过使用 ontouch(没用)和 dispatchTouchEvent(有用但我无法使用子菜单按钮
这是我实现可扩展 FAB 的代码
fab_main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isOpen) {
textView_img_edit.setVisibility(View.INVISIBLE);
textview_bg_edit.setVisibility(View.INVISIBLE);
fab2_bg_edit.startAnimation(fab_close);
fab1_img_edit.startAnimation(fab_close);
fab_main.startAnimation(fab_anti_clock_wise);
fab2_bg_edit.setClickable(false);
fab1_img_edit.setClickable(false);
isOpen = false;
} else {
textView_img_edit.setVisibility(View.VISIBLE);
textview_bg_edit.setVisibility(View.VISIBLE);
fab2_bg_edit.startAnimation(fab_open);
fab1_img_edit.startAnimation(fab_open);
fab_main.startAnimation(fab_clock_wise);
fab2_bg_edit.setClickable(true);
fab1_img_edit.setClickable(true);
isOpen = true;
}
}
});
我在 onTouch 和 dispatchTouchEvent 中都使用了这段代码
if (isOpen) {
textView_img_edit.setVisibility(View.INVISIBLE);
textview_bg_edit.setVisibility(View.INVISIBLE);
fab2_bg_edit.startAnimation(fab_close);
fab1_img_edit.startAnimation(fab_close);
fab_main.startAnimation(fab_anti_clock_wise);
fab2_bg_edit.setClickable(false);
fab1_img_edit.setClickable(false);
isOpen = false;
}
尝试在基本布局上设置 onTouchListener
。您可以检查 MotionEvent.ACTION_UP
并在那里关闭您的 fab 子菜单(如果它打开)。
我正在尝试实现一个可扩展的工厂,我实现了它并且它按预期工作,即当用户点击 fab_main 时,子菜单变为可见和活动,当用户点击 fab_main 子菜单再次变为不可见和非活动状态。 我的问题是,当用户点击屏幕时,我希望子菜单关闭(如果它是打开的),例如当前的 activity
我试过使用 ontouch(没用)和 dispatchTouchEvent(有用但我无法使用子菜单按钮
这是我实现可扩展 FAB 的代码
fab_main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isOpen) {
textView_img_edit.setVisibility(View.INVISIBLE);
textview_bg_edit.setVisibility(View.INVISIBLE);
fab2_bg_edit.startAnimation(fab_close);
fab1_img_edit.startAnimation(fab_close);
fab_main.startAnimation(fab_anti_clock_wise);
fab2_bg_edit.setClickable(false);
fab1_img_edit.setClickable(false);
isOpen = false;
} else {
textView_img_edit.setVisibility(View.VISIBLE);
textview_bg_edit.setVisibility(View.VISIBLE);
fab2_bg_edit.startAnimation(fab_open);
fab1_img_edit.startAnimation(fab_open);
fab_main.startAnimation(fab_clock_wise);
fab2_bg_edit.setClickable(true);
fab1_img_edit.setClickable(true);
isOpen = true;
}
}
});
我在 onTouch 和 dispatchTouchEvent 中都使用了这段代码
if (isOpen) {
textView_img_edit.setVisibility(View.INVISIBLE);
textview_bg_edit.setVisibility(View.INVISIBLE);
fab2_bg_edit.startAnimation(fab_close);
fab1_img_edit.startAnimation(fab_close);
fab_main.startAnimation(fab_anti_clock_wise);
fab2_bg_edit.setClickable(false);
fab1_img_edit.setClickable(false);
isOpen = false;
}
尝试在基本布局上设置 onTouchListener
。您可以检查 MotionEvent.ACTION_UP
并在那里关闭您的 fab 子菜单(如果它打开)。