![](/img/trans.png)
[英]Moving Circular Floating Action Button up and down to avoid getting blocked by a snackbar
[英]Moving Floating Action Button up and down to avoid getting blocked by a 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();
尝试使用android.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用于两个主要用例:
- 作为顶级应用程序装饰或chrome布局
- 作为与一个或多个子视图进行特定交互的容器
通过为CoordinatorLayout的子视图指定行为,您可以在单个父级中提供许多不同的交互,并且这些视图也可以相互交互。 使用DefaultBehavior批注时,View类可以在用作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
}
.....
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.