实现FloatingActionsMenu时隐藏android LinearLayout

时间:2016-12-11 10:46:10

标签: android android-layout android-relativelayout

抱歉英语不好。我用Toolbar创建了一个app界面素材设计,TabHost一切正常。然后我想在一个标签中添加FloatingActionsMenu。所以我使用了:http://com.getbase.floatingactionbutton.FloatingActionsMenu库。当我使用FloatingActionsMenu时,其他包含的选项卡现在已经消失。这是我的完整xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <android.support.v7.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:elevation="4dp"
        android:theme="@style/MyCustomToolBarTheme"
        android:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
        fab:titleTextAppearance="@style/Toolbar.TitleText" >
    </android.support.v7.widget.Toolbar>
    <TabHost
        android:id="@+id/tabHost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:tabStripEnabled="false">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:showDividers="none"/>
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
                <RelativeLayout
                    android:id="@+id/tab1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"
                    android:layout_marginTop="2dp"
                    android:background="@color/gray">
                    <LinearLayout
                        android:id="@+id/tab1_container"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:orientation="vertical"
                        android:gravity="center">
                    <!--The Other Contain in Tab one Container-->
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="This is Tab One Container"
                            android:id="@+id/textView"
                            android:textSize="17sp" />
                    </LinearLayout>
                    <FrameLayout
                        android:id="@+id/menu_frame_layout"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:background="@color/white_overlay">
                        <com.getbase.floatingactionbutton.FloatingActionsMenu
                            android:id="@+id/fab_menu"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="right|bottom"
                            fab:fab_addButtonColorNormal="@color/accent"
                            fab:fab_addButtonColorPressed="@color/accent_dark"
                            fab:fab_addButtonPlusIconColor="@color/white"
                            fab:fab_addButtonStrokeVisible="false"
                            fab:fab_labelStyle="@style/menu_labels_style"
                            fab:fab_labelsPosition="left">
                        <com.getbase.floatingactionbutton.FloatingActionButton
                            android:id="@+id/fab_event"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            fab:fab_colorNormal="@color/accent"
                            fab:fab_colorPressed="@color/accent_dark"
                            fab:fab_plusIconColor="@color/white"
                            fab:fab_icon="@android:drawable/ic_dialog_email"
                            fab:fab_size="mini"
                            fab:fab_title="Emails" />
                    </com.getbase.floatingactionbutton.FloatingActionsMenu>
                </FrameLayout>
            </RelativeLayout>
           <LinearLayout
                android:id="@+id/tab2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:layout_marginTop="2dp"
                android:gravity="center"
                android:background="@color/gray">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="This is Tab Two Container"
                        android:id="@+id/textView1"
                        android:textSize="17sp" />
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>

`

提前致谢。请帮帮我。

2 个答案:

答案 0 :(得分:0)

我想你可能意味着FloatingMenu在切换选项卡上消失了 如果那是你要求的那就是因为使用选项卡内的浮动按钮而不是选项卡布局所有

只是为了不让自己与代码混淆创建一个带有基本活动的应用程序,这意味着它已经有一个浮动按钮,如Android Studio中的这个太阳穴

enter image description here

并将FloatingButton替换为FloatingMenu 并将标签内容放在content_main.xml中 这是所有布局选项卡中的FloatingButton应该是的形式,这就是我的建议,我希望它可以帮助你

答案 1 :(得分:0)

谢谢大家。我通过onCreate方法中的以下代码解决了它

    final FrameLayout frameLayout = (FrameLayout) findViewById(R.id.menu_frame_layout);
    frameLayout.getBackground().setAlpha(0);
    final FloatingActionsMenu fabMenu = (FloatingActionsMenu) findViewById(R.id.fab_menu);
    fabMenu.setOnFloatingActionsMenuUpdateListener(new FloatingActionsMenu.OnFloatingActionsMenuUpdateListener() {
        @Override
        public void onMenuExpanded() {
            frameLayout.getBackground().setAlpha(130);
            frameLayout.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    fabMenu.collapse();
                    return true;
                }
            });
        }

        @Override
        public void onMenuCollapsed() {
            frameLayout.getBackground().setAlpha(0);
            frameLayout.setOnTouchListener(null);
        }
    });