我正在尝试构建一个浮动操作按钮,该按钮将在正在运行的每个活动中显示。如何完成布局以显示在每个活动中。

我已经看到了一些使用WindowManager的方法,但是我不喜欢坐在应用程序顶部并且需要覆盖方面的方法。使用ZIndex或在过渡新活动等时从服务添加到视图中有更好的方法吗?

谢谢。

最佳答案

您可以使用静态方法创建一个单独的类,该类将创建一个FabButton并将其附加到您的根视图。

    public class FabButton {
      public static void init(AppCompatActivity activity){
        View root = root.getWindow().getDecorView();
        FloatingActionButton fab = new FloatingActionButton(getContext());
        fab.setId(R.id.fab);
        fab.setLayoutParams(new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
                ));
        root.addView(fab);
      }
    }


您可以在任何要添加的地方使用它。在活动的onCreate中,调用:

FabButton.init(this);


编辑:我根据您的要求找到了更好的答案

在您的应用程序类的onCreate中,添加

registerActivityLifecycleCallbacks(this);


然后实现ActivityLifecycleCallbacks的方法。

现在在

 @Override
 public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
   FabButton.init(activity);
 }

10-05 20:40