2017-12-02 228 views
0

hide()メソッドを使用してボトムシートで固定されたfabボタンをユーザーがクリックしたときに非表示にしようとしていますが、ファブは非表示になりません。FloatingActionButton hide()メソッドを使用して非表示にする

現在サポートライブラリのバージョン26.1.0

活動

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レイアウト

<?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> 

答えて

0

を使用してそれはapp:layout_anchor属性によるものです。視界を変更する前にアンカーを削除する必要があります。このコード

CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); 
p.setAnchorId(View.NO_ID); 
fab.setLayoutParams(p); 
fab.hide(); 
関連する問題