このライブラリ を使用してフローティングアクションバーを実装していますが、スナックバーが画面に表示されたときにボタンを移動する方法を見つけることができません。そのライブラリでも可能ですか?
将来的に答えを探している方へ..
フローティングアクションボタンの親レイアウトとして使用されるコーディネーターレイアウトは、アニメーション効果を自動的に処理します。
フローティングアクションボタンには、追加される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();
UsingAndroid.support.design.widget.FloatingActionButton
およびCoordinatorLayout
。
そして、これを試してください:
fabView = findViewById(R.id.floating_action_button_id);
Snackbar.make(fabView, "Hi", Snackbar.LENGTH_LONG).show()
Android.support.design.widget.FloatingActionButton に切り替えて、 CoordinatorLayout を使用してビューの動作を指定できます。
CoordinatorLayoutは、強力なFrameLayoutです。
CoordinatorLayoutは、主に2つのユースケースを対象としています。
- トップレベルのアプリケーション装飾として、またはchromeレイアウト
- 1つ以上の子ビューとの特定の相互作用のコンテナーとして
CoordinatorLayoutの子ビューの動作を指定することにより、単一の親内でさまざまな相互作用を提供でき、それらのビューは互いに相互作用することもできます。ビュークラスは、DefaultBehaviorアノテーションを使用してCoordinatorLayoutの子として使用される場合のデフォルトの動作を指定できます。
ビヘイビアを使用して、スライド式の引き出しやパネルから、スワイプで消すことができる要素や、移動およびアニメーションするときに他の要素にくっつくボタンに至るまで、さまざまなインタラクションと追加のレイアウト変更を実装できます。
CoordinatorLayoutの子にはアンカーがあります。このビューIDはCoordinatorLayoutの任意の子孫に対応する必要がありますが、アンカーされた子自体またはアンカーされた子の子孫ではない場合があります。これは、他の任意のコンテンツペインに対してフローティングビューを配置するために使用できます。
を使用してparentLayoutを設定できます-FABとして、
Snackbar.make(parentLayout, R.string.snackbar_text,Snackbar.LENGTH_LONG).setAction(R.string.snackbar_action, myOnClickListener).show();
コトリン:
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
}
.....
}