我想在单击浮动操作菜单时设置透明背景图层。

时间:2015-05-25 07:12:41

标签: android xml layout material-design

这是我到目前为止所做的。创建了FloatingActionButton。现在当按下+图标时,后面应该有一个半透明层。

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
 <com.getbase.floatingactionbutton.FloatingActionsMenu
                android:id="@+id/actionMenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_marginBottom="60dp"
                fab:fab_addButtonColorNormal="@color/primary"
                fab:fab_addButtonColorPressed="@color/primary_dark"
                fab:fab_addButtonPlusIconColor="#ffffff">

                <com.getbase.floatingactionbutton.FloatingActionButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:onClick="openAudio"
                    fab:fab_colorNormal="#EA1E63"
                    fab:fab_colorPressed="#EA1E63"
                    fab:fab_icon="@drawable/ic_action_mic" />
 </com.getbase.floatingactionbutton.FloatingActionsMenu>

</RelativeLayout

5 个答案:

答案 0 :(得分:2)

试试这个。

floatingActionMenuButton.setOnMenuToggleListener(new FloatingActionMenu.OnMenuToggleListener() {
            @Override
            public void onMenuToggle(boolean opened) {
                if (opened) {
                    //menu opened
                } else {
                    //menu closed
                }
            }
        });

答案 1 :(得分:1)

使用setBackgroundResource或setBackgroundColor。我认为首先很简单。

第二个将int作为参数。因此,只需将十六进制颜色(例如#55000000)转换为十进制,它也可以正常工作。

答案 2 :(得分:1)

我有同样的问题,我按照以下方式修复了它。

我添加了一个相对布局,它将在宽度和高度上匹配父级。 将其背景颜色设置为黑色,并将alpha设置为所需的不透明度。

<RelativeLayout
    android:id="@+id/obstructor"
    android:visibility="invisible"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:alpha="0.75"
    android:background="@android:color/black">

</RelativeLayout>

然后在展开和折叠的菜单项上使其可见且不可见。

mFabMenu = (FloatingActionsMenu) findViewById(R.id.multiple_actions);
final RelativeLayout obstrucuterView = (RelativeLayout) findViewById(R.id.obstructor);
obstrucuterView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (obstrucuterView.getVisibility() == View.VISIBLE) {
            mFabMenu.collapse();
            return true;
        }
        return false;
    }
});

mFabMenu.setOnFloatingActionsMenuUpdateListener(new FloatingActionsMenu.OnFloatingActionsMenuUpdateListener() {
    @Override
    public void onMenuExpanded() {
        if (obstrucuterView.getVisibility() == View.INVISIBLE)
            obstrucuterView.setVisibility(View.VISIBLE);
    }

    @Override
    public void onMenuCollapsed() {
        if (obstrucuterView.getVisibility() == View.VISIBLE)
            obstrucuterView.setVisibility(View.INVISIBLE);
    }
});

希望这有帮助。

答案 3 :(得分:0)

还有另一个自定义库,它比您现在使用的更高级。

在此处 Clans floating Action Button

将此设置为true,它将解决您的问题。如果有帮助,请告诉我

fabPlusButton.setClosedOnTouchOutside(true);

答案 4 :(得分:0)

如果您使用的是Clans floating Action Button,那么如果它满足您的用例,那么fab:menu_backgroundColor可能是您可以查看的内容。当然布局的宽度和高度都应该与父级匹配(这个解决方案对我有用)