如何将Android SnackBar调整到屏幕上的特定位置

Follwing新的android snackbar,我试图把它设置在一个特定的y坐标。 它似乎甚至不可能。

我已经尝试了获得小吃店的视图的父母,但是,对于父母来说,没有任何事情可以设置它的位置。

mSnackBar.getView().getParent(); 

在挖掘实际的类时,有一个mView的实例,而mParent是私有的,不能以任何方式到达。

https://developer.android.com/reference/android/support/design/widget/Snackbar.html

  • 如何在Android上制作Twitter应用风格的快速操作
  • CoordinatorLayout中的ViewPager覆盖API> = 21的其他视图
  • Android - 在全屏video的最后一帧覆盖的视图在打开和closures屏幕时无法正确重绘
  • Android - 如何在TextView中高效加载大量文本?
  • 在android kitkat中使用新的IMMERSIVE模式
  • Android - 尝试在空对象引用上调用虚方法'void android.view.View.getBoundsOnScreen(android.graphics.Rect)'
  • 如何将数据从活动发送到片段
  • 显示键盘时DialogFragment不能resize
  • 可以通过将android.support.design.widget.CoordinatorLayout放置在现有的Activity布局中来设置Snackbar的显示位置。

    例如,说你现有的布局是一个RelativeLayout你可以添加一个CoordinatorLayout如下:

     <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/myCoordinatorLayout" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"> </android.support.design.widget.CoordinatorLayout> 

    然后,确保你传递了CoordinatorLayout作为Snackbar.make()命令的第一个参数。

     final View viewPos = findViewById(R.id.myCoordinatorLayout); Snackbar.make(viewPos, R.string.snackbar_text, Snackbar.LENGTH_LONG) .setAction(R.string.snackbar_action_undo, showListener) .show(); 

    这将导致Snackbar被显示在提供给make()函数的CoordinatorLayout底部

    如果你传递一个不是CoordinatorLayoutView ,那么Snackbar会走到树上直到find一个CoordinatorLayout或者这个布局的根。