我正在尝试构建一个浮动操作按钮,该按钮将在正在运行的每个活动中显示。如何完成布局以显示在每个活动中。
我已经看到了一些使用WindowManager的方法,但是我不喜欢它放在应用程序的顶部,并且需要覆盖方面。使用ZIndex或在转换新活动等时从服务添加到视图中有更好的方法吗?
谢谢。
答案 0 :(得分:1)
创建布局fab_layout
:
<android.support.design.widget.FloatingActionButton
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_fab_24dp"
android:layout_marginRight="@dimen/fab_margin"
android:layout_marginEnd="@dimen/fab_margin"
android:layout_marginBottom="@dimen/fab_margin"
android:layout_gravity="bottom|end"
app:backgroundTint="#00ff00"/>
在所有活动中添加以下标签:
<include layout="@layout/fab_layout />
答案 1 :(得分:1)
您可以使用静态方法创建一个单独的类,该类将创建一个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);
}
答案 2 :(得分:0)
您可以创建一个基本活动“ FABActivity”,在其中可以在运行时通过onCreate()方法将FAB按钮添加到根布局中。
扩展此活动的每个活动都将具有相同的FAB。
答案 3 :(得分:0)
这里有无数种方式可以实现您想要的目标。
这里是另一个:
您可以将所有活动作为片段。您可以使用带有相对布局的xml布局创建一个MainActivity,在其中添加FAB和一个容器(片段的宽度和高度= match_parent
)(您的活动)。