如何将FAB遮盖住?

时间:2019-06-17 14:11:39

标签: android material-design

好吧,我有一个活动(带有ViewPager和FAB)

在ViewPager中有一个NotesFragment(片段仅包含RecyclerView)

我有一个Fragment调用AddNoteFragment来完成添加和显示现有Note的工作: 1)从Activity fab中打开AddNoteFragment以添加注释,这是合乎逻辑的, 2)从RecyclerView中,单击项目将打开AddNoteFragment,其中包含单击项目的详细信息

问题:当我打开AddNoteFragment正确显示令人兴奋的笔记时,如何在Activity上隐藏FAB?我知道的唯一方法是使用接口并向上传输它,但这看起来像RecyclerViewAdapter-> NotesFragment-> ViewPagerAdapter-> Activity,看起来很奇怪。.

1 个答案:

答案 0 :(得分:0)

虽然我认为使用接口是一种很好的方法,但是您可能想看一下EventBus(https://github.com/greenrobot/EventBus),它的工作原理与BroadcastReceiver类似,所有您需要做的就是等待事件在您的活动上,并随时隐藏/显示它。以下是您必须添加到活动中的代码:

@Override
 public void onStart() {
     super.onStart();
     EventBus.getDefault().register(this);
 }

 @Override
 public void onStop() {
     super.onStop();
     EventBus.getDefault().unregister(this);
 }

@Subscribe(threadMode = ThreadMode.MAIN)  
public void onMessageEvent(Boolean show) {if (show){
  fab.show()
}else{
  fab.hide()
}};

然后,只要需要,您只需致电

EventBus.getDefault().post(/* true or false*/);