我正在使用以下FAB库
https://github.com/futuresimple/android-floating-action-button。
并遵循此stackoverflow帖子Floating action button and white background以在屏幕上显示叠加层。
我在Fragment中使用上面提到的帖子中的FloatingActionButton,但是覆盖不会超过操作栏。 无法找到任何解决方案以在整个屏幕上显示叠加层(包括操作栏)
代码 Fragment.java
final FrameLayout fl = FrameLayout)view.findViewById(R.id.floatingcontainer);
final FloatingActionsMenu fam = (FloatingActionsMenu) fl.findViewById(R.id.multiple_actions);
fam.setOnFloatingActionsMenuUpdateListener(new OnFloatingActionsMenuUpdateListener() {
@Override
public void onMenuExpanded() {
// TODO Auto-generated method stub
fl.setBackgroundColor(Color.parseColor("#c0ffffff"));
}
@Override
public void onMenuCollapsed() {
// TODO Auto-generated method stub
fl.setBackgroundColor(Color.TRANSPARENT);
}
});
fl.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// ignore all touch events
if(fam.isExpanded()){
fam.collapse();
return true;
}
return false;
}
});
XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:fab="http://schemas.android.com/apk/res/com.yourapp.data"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp">
//some previous code
<FrameLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/floatingcontainer"
android:clickable="false" >
<com.getbase.floatingactionbutton.FloatingActionsMenu
android:id="@+id/multiple_actions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginBottom="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="66dp"
fab:fab_addButtonColorNormal="@color/orange"
fab:fab_addButtonColorPressed="@color/orange_pressed"
fab:fab_labelStyle="@style/menu_labels_style" >
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/action_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fab:fab_icon="@drawable/menu1"
fab:fab_colorNormal="@color/orange"
fab:fab_colorPressed="@color/orange_pressed"
fab:fab_title="Menu 1" />
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/action_b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fab:fab_icon="@drawable/menu2"
fab:fab_colorNormal="@color/orange"
fab:fab_colorPressed="@color/orange_pressed"
fab:fab_title="Menu 2" />
</com.getbase.floatingactionbutton.FloatingActionsMenu>
</FrameLayout>
提前致谢,
爬完
答案 0 :(得分:1)
我不知道您的代码,但我假设您使用了ActionbarActivity。在那里使用的Actionbar不属于你的布局,因此FrameLayout不会在它上面绘制。
按照此文章创建一个布局,您可以在其中控制ActionBar(使用工具栏):http://javatechig.com/android/android-lollipop-toolbar-example
如果这不是问题,您可以尝试在布局上调用View.bringToFront()。
答案 1 :(得分:1)
您需要在布局中使用工具栏并将FrameLayout
作为父级。然后,您可以在布局中使用透明背景的视图,您可以在OnFloatingActionsMenuUpdateListener
界面方法中显示和隐藏。