KittoKatto
KittoKatto

Reputation: 544

FloatingActionButton wont hide with hide() method

I am trying to hide the FloatingActionButton when user click the fab button which anchored with Bottom Sheet with the hide() method, but the fab won't hide.

Currently using support library version 26.1.0

Activity

public class A_TestActivity extends AppCompatActivity {

    FloatingActionButton fab;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a_test_activity);
        fab = findViewById(R.id.fab);

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                fab.hide();  // not working
                Toast.makeText(A_TestActivity.this, "hide()", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

XML layout

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/coordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#AAAAAA">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"/>

    <!-- Bottom Sheet -->
    <android.support.v4.widget.NestedScrollView
        android:id="@+id/vBottomSheetRoot"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tv"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Sample text" />
        </LinearLayout>

    </android.support.v4.widget.NestedScrollView>

    <!-- Floating action button -->
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:elevation="4dp"
        app:layout_anchor="@id/vBottomSheetRoot"
        app:layout_anchorGravity="top|right|end" />

</android.support.design.widget.CoordinatorLayout>

Upvotes: 2

Views: 654

Answers (1)

Munir
Munir

Reputation: 2558

It is due to the app:layout_anchor attribute. you must remove anchor before change the visibility.try this code

 CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
 p.setAnchorId(View.NO_ID);
 fab.setLayoutParams(p);
 fab.hide(); 

Upvotes: 2

Related Questions