我正在使用这个库来实现一个浮动操作栏,当屏幕上出现一个快餐栏时,我似乎找不到移动按钮的方法。那个图书馆甚至有可能吗?
5 回答
对于任何在未来寻找答案的人..
Coordinator Layout 用作 Floating Action Button 的 Parent Layout 将自动为您处理动画效果。
浮动操作按钮有一个默认行为,它检测添加的 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 layout] 作为父布局,如下所示:
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 注释作为 CoordinatorLayout 的子级时,视图类可以指定默认行为。
行为可用于实现各种交互和其他布局修改,从滑动抽屉和面板到滑动可关闭元素和按钮,这些元素在移动和动画时会粘在其他元素上。
CoordinatorLayout 的子项可能有一个锚点。此视图 id 必须对应于 CoordinatorLayout 的任意后代,但它可能不是锚定子本身或锚定子的后代。这可用于相对于其他任意内容窗格放置浮动视图。
科特林:
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
}
.....
}
您可以使用设置 parentLayout - 作为 FAB,
Snackbar.make(parentLayout, R.string.snackbar_text,Snackbar.LENGTH_LONG).setAction(R.string.snackbar_action, myOnClickListener).show();