snackbar

作者: 难得糊涂与君勉 | 来源:发表于2017-02-15 10:32 被阅读37次
    • 介绍
      与Toast类似,但不是Toast的替代品,Toast的作用是告诉用户现在发生了什么事情,但是用户只能被动的接受。
      

    而Snackbar则在这方面进行了扩展,允许在提示当中加入一个可以交互的按钮,当用户点击按钮时候可以执行
    一些额外的逻辑操作

    - 简单使用
    

    Snackbar.make(view,"Data deleted",Snackbar.LENGTH_SHORT)
    .setAction("Undo", new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    Toast.makeText(MainActivity.this,"你做出了修改",Toast.LENGTH_SHORT).show();
    }
    }).show();
    //上述代码表示最简单的使用,.make()方法来创建了一个Snackbar对象,第一个参数需要传入一个view,只要
    //是当前界面布局的任意一个View都可以,Snackbar会使用这个View来自动查找最外层的布局,用于展示Snackbar,
    //第二个参数是要显示的内容,第三个参数表示展示时长。
    //.setAction()方法,设置一个动作。

    
    - 别的用法
    

    // 设置动作按钮颜色
    snackbar.setActionTextColor(getResources().getColor(R.color.add_bg_color));
    // 获取 snackbar 视图
    View snackbarView = snackbar.getView();
    //设置修改snackbar文本颜色
    �int snackbarTextId = android.support.design.R.id.snackbar_text;
    TextView tv = (TextView) snackbarView.findViewById(snackbarTextId);
    tv.setTextColor(getResources().getColor(R.color.add_bg_color));
    //设置snackbar背景色
    �snackbarView.setBackgroundColor(Color.GRAY);

    
    - 添加一个icon
    

    //先得到Snackbar的视图。
    View snackbarView = snackbar.getView();
    //设置icon
    ImageView iconImage = new ImageView(MainActivity.this);//得到一个Imageview
    iconImage.setImageResource(R.mipmap.ic_launcher);//给ImageView设置图片
    //icon插入布局
    Snackbar.SnackbarLayout snackbarLayout = (Snackbar.SnackbarLayout) snackbarView;
    Snackbar.SnackbarLayout.LayoutParams sl = new Snackbar.SnackbarLayout.LayoutParams(vl.WRAP_CONTENT, vl.WRAP_CONTENT);
    //让icon的布局位于父布局垂直居中的位置
    sl.gravity = Gravity.CENTER_VERTICAL;
    iconImage.setLayoutParams(sl);
    snackbarLayout.addView(iconImage, 0);

    
    - 改变Snackbar出现的位置
    

    // 获取 snackbar 视图
    View snackbarView = snackbar.getView();
    //获得布局参数
    ViewGroup.LayoutParams vl = snackbarView.getLayoutParams();
    CoordinatorLayout.LayoutParams cl = new CoordinatorLayout.LayoutParams(vl.width, vl.height);
    cl.gravity = Gravity.CENTER_VERTICAL;
    snackbarView.setLayoutParams(cl);

    
    参考:[https://github.com/loonggg/MaterialDesignDemo](https://github.com/loonggg/MaterialDesignDemo)

    相关文章

      网友评论

          本文标题:snackbar

          本文链接:https://www.haomeiwen.com/subject/bguzittx.html