浮动行动按钮和全屏幕白色背景

时间:2015-04-05 12:33:05

标签: android floating-action-button

我正在使用以下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>

提前致谢,
爬完

2 个答案:

答案 0 :(得分:1)

我不知道您的代码,但我假设您使用了ActionbarActivity。在那里使用的Actionbar不属于你的布局,因此FrameLayout不会在它上面绘制。

按照此文章创建一个布局,您可以在其中控制ActionBar(使用工具栏):http://javatechig.com/android/android-lollipop-toolbar-example

如果这不是问题,您可以尝试在布局上调用View.bringToFront()。

答案 1 :(得分:1)

您需要在布局中使用工具栏并将FrameLayout作为父级。然后,您可以在布局中使用透明背景的视图,您可以在OnFloatingActionsMenuUpdateListener界面方法中显示和隐藏。