FloatingActionButton有时可见,即使可见性设置为

时间:2015-09-23 06:55:22

标签: android floating-action-button

我的LinearLayout中有一个FAB(FloatingActionButton)。我希望隐藏LinearLayout,即首先将可见性设置为消失,然后单击菜单按钮,它应该可见。一切都工作正常但FAB在隐藏之前仍然可见。我尝试了改变FAB的可见性和使用hide()和show(),但没有任何作用。

我收到了以下链接,但由于某种原因,他们不能为我工作。

  1. FloatingActionButton always visible
  2. Gone FAB becames visible for a while
  3. FloatingActionButton doesn't hide
  4. 我的activity_main.xml:

    <android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.wolfarts.checklist2.MainActivity">
    
        <android.support.v7.widget.Toolbar 
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:elevation="0dp"
            android:paddingTop="24dp"
            android:theme="@style/MyToolbarStyle">
    
                <Spinner
                    android:id="@+id/spinner_nav"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" 
                    style="@style/Base.TextAppearance.AppCompat.Title"
                    android:visibility="gone"/>
    
        </android.support.v7.widget.Toolbar>
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <LinearLayout
                android:id="@+id/emptyStateView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"   
                android:orientation="vertical"
                android:gravity="center">
    
               <ImageView
                    android:src="@drawable/emptystatebag"
                    android:layout_marginTop="-30dp"
                    android:layout_gravity = "center"
                    android:layout_height="170dp"
                    android:layout_width="300dp"/>
    
               <TextView
                    android:paddingTop="8dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:gravity = "center"
                    android:text="Nothing here. Try Adding Something."
                    android:textColor="#B8B8B8"
                    android:textSize="18sp"/>
    
               </LinearLayout>
    
            <android.support.design.widget.CoordinatorLayout 
                android:id="@+id/maincontainer"  
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
                    <LinearLayout
                        android:orientation="vertical"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:animateLayoutChanges="true">
    
                            <LinearLayout
                                android:id="@+id/toolbarContent"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:orientation="vertical"
                                android:paddingLeft="72dp"
                                android:paddingStart="72dp"
                                android:paddingRight="18dp"
                                android:paddingEnd="18dp"
                                android:paddingBottom="80dp"
                                android:visibility="gone"
                                android:elevation="4dp"
                                android:descendantFocusability="beforeDescendants"
                                android:focusableInTouchMode="true">
    
                                <android.support.design.widget.TextInputLayout
                                    android:id="@+id/username_text_input_layout"
                                    android:layout_width="match_parent"
                                    android:layout_height="wrap_content"
                                    android:textColorHint="#B3FFFFFF"
                                    android:layout_gravity="center_vertical">
    
                                    <EditText
                                        android:id="@+id/taskName"
                                        android:layout_width="match_parent"
                                        android:layout_height="wrap_content"
                                        android:textSize="35sp"
                                        android:maxLines="1"
                                        android:hint="Item Name"/>
    
                                </android.support.design.widget.TextInputLayout>
    
                            </LinearLayout>
    
                            <com.wolfarts.checklist2.CustomRecyclerView
                                android:id="@+id/taskListRecyclerView"
                                android:layout_height="match_parent"
                                android:layout_width="match_parent"/>
    
                </LinearLayout>
    
                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/fab"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_margin="16dp"
                    android:paddingLeft="16dp"
                    android:clickable="true"
                    android:src="@drawable/ic_done_white_24dp"
                    app:layout_anchor="@id/toolbarContent"
                    app:layout_anchorGravity="bottom|right|end"
                    app:backgroundTint="@color/orange"
                    android:visibility="gone"
                    app:elevation="8dp"/>
    
            </android.support.design.widget.CoordinatorLayout>
    
        </FrameLayout>
    
    </LinearLayout>
    
    
    
    <LinearLayout
        android:id="@+id/navDrawer"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="left|start">
    
        <ListView
            android:id="@+id/navList"
            android:paddingTop="24dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp"
            android:background="#ffeeeeee"/>
    
    </LinearLayout>
    

    这是FAB中的错误吗?

3 个答案:

答案 0 :(得分:5)

        CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams)    fab.getLayoutParams();
        p.setAnchorId(View.NO_ID);
        p.width = 0;
        p.height = 0;
        fab.setLayoutParams(p);
        fab.setVisibility(View.GONE);

答案 1 :(得分:1)

我遇到了同样的问题,浮动动作按钮在隐藏之前出现了一段时间。您应该做的第一件事是移除锚点重力,锚定并在布局中将其高度和宽度设置为0。

当你想让它可见时,按照这样的方式设置高度,宽度,锚点,锚点重力:

  CoordinatorLayout.LayoutParams p = new CoordinatorLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);

   p.setAnchorId(R.id.appbar);
   p.anchorGravity = Gravity.BOTTOM|Gravity.END|Gravity.RIGHT;
   fab.setLayoutParams(p);
   fab.setVisibility(View.VISIBLE);

答案 2 :(得分:0)

你试过这个吗?: FloatingActionButton doesn't hide 删除锚点似乎会影响FAB的setVisibility。