FloatingActionButton
を非表示にすることはできません。これが私のコードです:
XML:
<CoordinatorLayout>
<AppBarLayout Android:id="@+id/appbar">
<CollapsingToolbarLayout>
<ImageView/>
<Android.support.v7.widget.Toolbar />
</CollapsingToolbarLayout>
</AppBarLayout>
<NestedScrollView />
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fab"
app:layout_anchor="@id/appbar"
app:layout_anchorGravity="bottom|right|end"/>
</CoordinatorLayout>
そして私は呼んでいます:
fab.clearAnimation();
fab.setVisibility(View.GONE);
FABを非表示にしようとしていますが、FABがsetVisibility
にある場合、clearAnimation
+ CoordinatorLayout
が機能しないようです。
fab.clearAnimation
を呼び出しても、アニメーションはトリガーされます。誰か助けてもらえますか?
アニメーションに問題がある場合は、FAB Behavior
を無効にしてみてください。可視性については、レイアウトで設定したアンカーをnullにする必要があります。
CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
p.setBehavior(null); //should disable default animations
p.setAnchorId(View.NO_ID); //should let you set visibility
fab.setLayoutParams(p);
fab.setVisibility(View.GONE); // View.INVISIBLE might also be worth trying
//to bring things back to normal state
CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
p.setBehavior(new FloatingActionButton.Behavior());
p.setAnchorId(R.id.appbar);
fab.setLayoutParams(p);
Showおよびhideメソッドを使用して、フローティングアクションボタンを表示および非表示にする
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
// To show the Floating Action Button
fab.show();
// To hide the Floating Action Button
fab.hide();
FloatingActionButton
の場合、setVisibility()
メソッドを使用すると、最新のGradle 6.x
およびbuild-tool 28.x.x
でビルド中にエラーが発生し、推奨されなくなりました。 代わりに、次を使用:
fab.hide() // fab.setVisibility(View.GONE)
fab.show() // fab.setVisibility(View.VISIBLE)
注:
Android Studio 3.4.1
、Gradle 6.0
およびbuild-tool 28.0.1
でのテストに成功
私はまったく同じ問題に遭遇しました。この問題で説明したように、FloatingActionButtonがAppBarLayoutにアンカーされている場合、GoogleのAndroidチームは可視性を制御することを望んでいないようです- FloatingActionButtonはビューの可視性を無視します
次のように、実行可能な修正はFABをFrameLayoutでラップし、代わりにラッパーの可視性を設定しているようです。
<Android.support.design.widget.FrameLayout
Android:id="@+id/fab_container"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:visibility="invisible">
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fab"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/fab_icon"/>
</Android.support.design.widget.FrameLayout>
ただし、これが理想的な動作であるかどうかを検討することもできます。 Googleの支持者は、画面が作成されたらすぐにFABを表示することを推奨しています。アニメーション化に必要な時間より長く非表示にしている場合は、代わりに無効状態を表示することを検討してください。
FloatingActionButton layers = (FloatingActionButton) findViewById(R.id.layers);
layers.hide();
setVisibility
は、FloatingActionButton
メソッドを持たない別のviewGroup
に属しているため、setVisibility
では機能しません。
あなたはそれを無効にして、このように半透明にすることができます
fab.setEnabled(false);
fab.setClickable(false);
fab.setAlpha(0.3f);