Android(安卓)FloatingActionButton控件
16lz
2022-04-09
1. FloatingActionButton类
FloatingActionButton
是5.0版本出现的控件,显示一个圆形悬浮按钮。需要添加Design
依赖库,并且使用Theme.AppCompat
主题。
2. FloatingActionButton配置
FloatingActionButton
的配置
android:src
,显示的图标,最好是24dp的app:backgroundTint
,正常的背景颜色app:rippleColor
,按下时的背景颜色app:elevation
,正常的阴影大小(默认6dp)app:pressedTranslationZ
,按下时的阴影大小(默认12dp)app:borderWidth
,边框宽度app:layout_anchor
,设置FAB的锚点,即以哪个控件为参照设置位置app:layout_anchorGravity
,FAB相对于锚点的位置app:fabSize
,normal
或mini
(对应56dp和40dp)
配置文件
效果如下
3. Snackbar交互
FloatingActionButton
如果没有与Snackbar
关联,容易被Snackbar
覆盖。
设置FloatingActionButton
在CoordinatorLayout
内部,同时将这个CoordinatorLayout
作为View
参数传给Snackbar
的make()
方法。
查看了一下Snackbar
的源码,如果父视图是CoordinatorLayout
,创建Snackbar
的时候,会设置LayoutParams
的insetEdge
属性。
final void showView() { if (mView.getParent() == null) { final ViewGroup.LayoutParams lp = mView.getLayoutParams(); if (lp instanceof CoordinatorLayout.LayoutParams) { // If our LayoutParams are from a CoordinatorLayout, we'll setup our Behavior final CoordinatorLayout.LayoutParams clp = (CoordinatorLayout.LayoutParams) lp; final Behavior behavior = new Behavior(); behavior.setStartAlphaSwipeDistance(0.1f); behavior.setEndAlphaSwipeDistance(0.6f); behavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_START_TO_END); behavior.setListener(new SwipeDismissBehavior.OnDismissListener() { @Override public void onDismiss(View view) { view.setVisibility(View.GONE); dispatchDismiss(BaseCallback.DISMISS_EVENT_SWIPE); } @Override public void onDragStateChanged(int state) { switch (state) { case SwipeDismissBehavior.STATE_DRAGGING: case SwipeDismissBehavior.STATE_SETTLING: // If the view is being dragged or settling, pause the timeout SnackbarManager.getInstance().pauseTimeout(mManagerCallback); break; case SwipeDismissBehavior.STATE_IDLE: // If the view has been released and is idle, restore the timeout SnackbarManager.getInstance() .restoreTimeoutIfPaused(mManagerCallback); break; } } }); clp.setBehavior(behavior); // Also set the inset edge so that views can dodge the bar correctly clp.insetEdge = Gravity.BOTTOM; } mTargetParent.addView(mView); } ... ...}
相关文章
Android Snackbar控件
Android FloatingActionButton控件
Android Toolbar控件
Android AppBarLayout控件
Android CollapsingToolbarLayout控件
Android CardView控件
Android SlidingPaneLayout和DrawerLayout控件
Android NavigationView控件
Android TabLayout控件
更多相关文章
- Android(安卓)- 永不锁屏,开机不锁屏,删除设置中休眠时间选项
- Android(安卓)- 绘画出圆并保存为图片(详)
- Android使用MQTT协议
- Android(安卓)--spinner构造下垃菜单
- Android(安卓)ImageView图片自适应
- Android之布局
- Android(安卓)自动化测试—robotium(三)EditText控件
- android 设置特殊字体
- 动画·界面