【UI】SnackBar使用

来源:互联网 发布:高级人体建模软件 编辑:程序博客网 时间:2024/06/08 14:05

使用场景:

Toast: 用户无法交互;Dialog:用户可以交互,但是体验会打折扣,会阻断用户的连贯性操作;Snackbar既可以做到轻量级的用户提醒效果,又可以有交互的功能(必须是一种非必须的操作)。

自定义SnackBar:

1、SnackBar要想自定义,先找到系统定义布局,由于系统已经写死xml文件,我们无法自定义布局,所以只能代码改写现有布局属性。

@NonNull    public static Snackbar make(@NonNull View view, @NonNull CharSequence text,            @Duration int duration) {        ...代码省略...        final LayoutInflater inflater = LayoutInflater.from(parent.getContext());        final SnackbarContentLayout content =                (SnackbarContentLayout) inflater.inflate(                        R.layout.design_layout_snackbar_include, parent, false);         ...代码省略...    }

SnackBar视图布局SnackbarContentLayout

2、由于代码修改SnackBar样式,所以要拿到SnackBar视图:

根据源代码来看:
SnackBar继承于BaseTransientBottomBar
从中间找到getView方法。

@NonNull    public View getView() {        return mView;    }

方法返回Snackbar.SnackbarLayout

3、总体使用:

    Snackbar snackbar = Snackbar.make(view, "是否撤销删除?", Snackbar.LENGTH_LONG);        Snackbar.SnackbarLayout snackbarView = (Snackbar.SnackbarLayout) snackbar.getView();        Button snackbarAction = snackbarView.findViewById(android.support.design.R.id                .snackbar_action);        snackbarAction.setTextColor(Color.RED);        snackbarView.setBackgroundResource(R.drawable.divider_bg);
原创粉丝点击