我可以向自定义快餐栏添加边距(扩展 BaseTransientBottomBar)吗?
Posted
技术标签:
【中文标题】我可以向自定义快餐栏添加边距(扩展 BaseTransientBottomBar)吗?【英文标题】:Can I add margins to a custom snackbar (extends BaseTransientBottomBar)? 【发布时间】:2020-09-02 13:00:21 【问题描述】:我有一堂课:
public final class MySnackbar<T>
extends BaseTransientBottomBar<AccountSnackbar<T>>
我尝试通过调用ctor来为MySnackbar
添加边距:
private void setSnackbarContainerMargins(Context context, View content)
MarginLayoutParams layoutParams = (MarginLayoutParams) getView().getLayoutParams();
int horizontalMargin =
layoutParams.leftMargin = horizontalMargin;
layoutParams.rightMargin = horizontalMargin;
layoutParams.bottomMargin =
parent.setLayoutParams(layoutParams);
在运行时,我看到边距保持不变。
有没有其他方法可以为我的自定义快餐栏添加额外的边距?
【问题讨论】:
检查这个answer。您可以使用自定义样式来做到这一点,但有一些限制。 为什么这些不起作用? ***.com/a/44295639/311130 或 ***.com/a/33969220/311130 【参考方案1】:你可以试试这个,CoordinatorLayout
是你的 snapbar 父布局:
int sideMargin = 12, marginBottom = 12;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
sideMargin = 24;
marginBottom = 24;
MySnackbar snackbar = Snackbar.make(findViewById(R.id.addCoordinatorLayout), R.string.notification, Snackbar.LENGTH_SHORT);
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);
snackBarView.setBackground(getDrawable(R.drawable.round_corner));
snackbar.show();
【讨论】:
以上是关于我可以向自定义快餐栏添加边距(扩展 BaseTransientBottomBar)吗?的主要内容,如果未能解决你的问题,请参考以下文章