【问题标题】:Can I add margins to a custom snackbar (extends BaseTransientBottomBar)?我可以向自定义快餐栏添加边距(扩展 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);
  }

在运行时,我看到边距保持不变。

有没有其他方法可以为我的自定义快餐栏添加额外的边距?

【问题讨论】:

标签: android margins android-snackbar


【解决方案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();

【讨论】:

    猜你喜欢
    • 2018-10-20
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2020-08-26
    • 2011-05-23
    相关资源
    最近更新 更多