Reputation: 544
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
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