使用 FLAG_NO_LIMIT 后 SnackBar 落后于 NavigationBar
SnackBar goes behind NavigationBar after using FLAG_NO_LIMIT
我正在尝试像这样专注于设计:
为此,我在 onCreate 中添加了
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
现在布局得到了扩展,但它以某种方式将我的小吃栏隐藏在导航栏后面,这不是预期的结果,因为它应该是 above.Here 我的屏幕截图:
我可能走错了路,如果你能纠正我,那将非常有帮助。
来自 here:为您的小吃店添加边距,48dp 应该足够了。
public static void displaySnackBarWithBottomMargin(Snackbar snackbar, int sideMargin, int marginBottom) {
final View snackBarView = snackbar.getView();
final CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) snackBarView.getLayoutParams();
params.setMargins(params.leftMargin + sideMargin,
params.topMargin,
params.rightMargin + sideMargin,
params.bottomMargin + marginBottom);
snackBarView.setLayoutParams(params);
snackbar.show();
}
无需猜测 LayoutParams(它可以让您的 Snackbar 在不同屏幕上处于奇怪的位置)
相反,只需确保布局的根是 CoordinatorLayout
。确保协调器也是给小吃店的视图(不要使用 v.getRootView()
因为这可能是另一个视图)
您可能需要为协调器提供一个 id 并将其作为视图传递:
new Snackbar.make(findViewById(R.id.coordinator), ...).show()
不要使用 "rootView" 实例来创建 Snackbar,而是像下面那样使用 getView()
Snackbar snackbar = Snackbar.make(getView(), "Your Message", Snackbar.LENGTH_LONG);
snackbar.show();
我用这个技巧解决了这个问题:
1- 向我的布局添加一个视图
2- 设置 Snackbar setAnchorView
In your XML
<View
android:id="@+id/snackBarAnchor"
android:layout_width="0.1dp"
android:layout_height="0.1dp"
android:layout_alignParentBottom="true" />
in your code
snackbar.setAnchorView(R.id.snackBarAnchor)
我正在尝试像这样专注于设计:
为此,我在 onCreate 中添加了
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
现在布局得到了扩展,但它以某种方式将我的小吃栏隐藏在导航栏后面,这不是预期的结果,因为它应该是 above.Here 我的屏幕截图:
我可能走错了路,如果你能纠正我,那将非常有帮助。
来自 here:为您的小吃店添加边距,48dp 应该足够了。
public static void displaySnackBarWithBottomMargin(Snackbar snackbar, int sideMargin, int marginBottom) {
final View snackBarView = snackbar.getView();
final CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) snackBarView.getLayoutParams();
params.setMargins(params.leftMargin + sideMargin,
params.topMargin,
params.rightMargin + sideMargin,
params.bottomMargin + marginBottom);
snackBarView.setLayoutParams(params);
snackbar.show();
}
无需猜测 LayoutParams(它可以让您的 Snackbar 在不同屏幕上处于奇怪的位置)
相反,只需确保布局的根是 CoordinatorLayout
。确保协调器也是给小吃店的视图(不要使用 v.getRootView()
因为这可能是另一个视图)
您可能需要为协调器提供一个 id 并将其作为视图传递:
new Snackbar.make(findViewById(R.id.coordinator), ...).show()
不要使用 "rootView" 实例来创建 Snackbar,而是像下面那样使用 getView()
Snackbar snackbar = Snackbar.make(getView(), "Your Message", Snackbar.LENGTH_LONG);
snackbar.show();
我用这个技巧解决了这个问题:
1- 向我的布局添加一个视图
2- 设置 Snackbar setAnchorView
In your XML
<View
android:id="@+id/snackBarAnchor"
android:layout_width="0.1dp"
android:layout_height="0.1dp"
android:layout_alignParentBottom="true" />
in your code
snackbar.setAnchorView(R.id.snackBarAnchor)