web-dev-qa-db-ja.com

スナックバーによってブロックされないように、フローティングアクションボタンを上下に移動する

このライブラリ を使用してフローティングアクションバーを実装していますが、スナックバーが画面に表示されたときにボタンを移動する方法を見つけることができません。そのライブラリでも可能ですか?

33
naja

将来的に答えを探している方へ..

フローティングアクションボタンの親レイアウトとして使用されるコーディネーターレイアウトは、アニメーション効果を自動的に処理します。

フローティングアクションボタンには、追加されるSnackbarビューを検出し、それに応じてボタンをSnackbarの高さより上にアニメーション化するデフォルトの動作があります。

フローティングアクションボタンの動作

<Android.support.design.widget.CoordinatorLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:id="@+id/clayout">
<Android.support.design.widget.FloatingActionButton
    Android:id="@+id/fab_btn"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_gravity="bottom|right"
    Android:layout_marginBottom="16dp"
    Android:layout_marginRight="16dp"
    Android:src="@drawable/filter_icon"
    app:rippleColor="@color/colorGray"
    app:fabSize="normal"
    app:borderWidth="0dp"/>
</Android.support.design.widget.CoordinatorLayout>

次に、SnackBarコードはCoordinatorlayout [here clayout]をparentlayoutとして次のように使用します。

Snackbar.make(clayout, "Click on row to know more details", Snackbar.LENGTH_LONG)
                    .setAction("OK", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                        }
                    }).show();
42
PunitD

UsingAndroid.support.design.widget.FloatingActionButtonおよびCoordinatorLayout

そして、これを試してください:

fabView = findViewById(R.id.floating_action_button_id);
Snackbar.make(fabView, "Hi", Snackbar.LENGTH_LONG).show()
9
Cody

Android.support.design.widget.FloatingActionButton に切り替えて、 CoordinatorLayout を使用してビューの動作を指定できます。

CoordinatorLayoutは、強力なFrameLayoutです。

CoordinatorLayoutは、主に2つのユースケースを対象としています。

  1. トップレベルのアプリケーション装飾として、またはchromeレイアウト
  2. 1つ以上の子ビューとの特定の相互作用のコンテナーとして

CoordinatorLayoutの子ビューの動作を指定することにより、単一の親内でさまざまな相互作用を提供でき、それらのビューは互いに相互作用することもできます。ビュークラスは、DefaultBehaviorアノテーションを使用してCoordinatorLayoutの子として使用される場合のデフォルトの動作を指定できます。

ビヘイビアを使用して、スライド式の引き出しやパネルから、スワイプで消すことができる要素や、​​移動およびアニメーションするときに他の要素にくっつくボタンに至るまで、さまざまなインタラクションと追加のレイアウト変更を実装できます。

CoordinatorLayoutの子にはアンカーがあります。このビューIDはCoordinatorLayoutの任意の子孫に対応する必要がありますが、アンカーされた子自体またはアンカーされた子の子孫ではない場合があります。これは、他の任意のコンテンツペインに対してフローティングビューを配置するために使用できます。

7
Ruslan Ulanov

を使用してparentLayoutを設定できます-FABとして、

Snackbar.make(parentLayout, R.string.snackbar_text,Snackbar.LENGTH_LONG).setAction(R.string.snackbar_action, myOnClickListener).show();
2
Sathish Kumar

コトリン:

class CustomBehavior : CoordinatorLayout.Behavior<FloatingActionButton> {   

....

    override fun onAttachedToLayoutParams(params: CoordinatorLayout.LayoutParams) {
        super.onAttachedToLayoutParams(params)

        //set dodgeInsetEdges to BOTTOM so that we dodge any Snackbars
        params.dodgeInsetEdges = Gravity.BOTTOM
    }

.....

}
1
Zuev Roman