SnackBar学习记录

谷歌官方介绍:

Snackbars provide lightweight feedback about an operation. They show a brief message at the bottom of the screen on mobile and lower left on larger devices. Snackbars appear above all other elements on screen and only one can be displayed at a time.

Snackbars 提供了一个轻量级的操作反馈,它们屏幕的底部显示一个简短的信息和如看是较大的设备就显示在左下方,snackbars出现在屏幕上的所有其他要素之上,只有一个可以同时显示 。

They automatically disappear after a timeout or after user interaction elsewhere on the screen, particularly after interactions that summon a new surface or activity. Snackbars can be swiped off screen.

在超时或者用户在屏幕上完成了交互的时候SnackBar会自动消失,特别是在召唤了新的表层(意思是SnackBar本来是最外层的,然后在SnackBar上又新添加了一层)或者Activity的时候。SnackBar能在屏幕上侧滑。

Snackbars can contain an action which is set via setAction(CharSequence, android.view.View.OnClickListener).

SnackBar能包含一个action使用setAction方法

To be notified when a snackbar has been shown or dismissed, you can provide a Snackbar.Callback via addCallback(BaseCallback).

可以通过CallBack来得知SnackBar是显示还是隐藏

提供的常量:

int LENGTH_INDEFINITE 
    Show the Snackbar indefinitely.  
    无限期的展示Snackbar 
int LENGTH_LONG 
    Show the Snackbar for a long period of time. 
int LENGTH_SHORT 
    Show the Snackbar for a short period of time. 
Snackbar make (View view, 
                CharSequence text, 
                int duration)

此处的make方法于Toast中的make方法类似,唯一区别在第一个传递的参数,此处的SnackBar需要传递的参数为View,SnackBar需要一个View来承载,SnackBar会遍历整个View Tree来找到一个合适的View来承载SnackBar的View,如果需要实现文档上描述的动画效果”such as swipe-to-dismiss and automatically moving of widgets like FloatingActionButton”就需要在布局中包括CoordinatorLayout,如果没有这个布局则就没有这些动画效果。

注意:使用时,如果不使用“<android.support.design.widget.CoordinatorLayout></android.support.design.widget.CoordinatorLayout>”标签包裹,不会出现文档中所描述的动画效果。

下面的代码基本涵盖了SnackBar的Api,使用起来也还算是比较优雅:

    publicclassMainActivityextendsAppCompatActivity{

    @Override
    protectedvoidonCreate(BundlesavedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    }

    publicvoidclick(Viewv){

    Snackbar.make(v,"我是一个SnackBar",Snackbar.LENGTH_LONG).setAction("Action",newView.OnClickListener(){
    @Override
    publicvoidonClick(Viewv){

    Toast.makeText(MainActivity.this,"Toast",Toast.LENGTH_SHORT).show();

    }

    }).setActionTextColor(Color.GREEN)//设置SnackBar中点击事件的字体颜色
    .setText("文字更新了")//更新SnackBar中提示的文字
    .setCallback(callback)//设置一个SnackBar状态的回调
    .show();


    }

    Snackbar.Callbackcallback=newSnackbar.Callback(){
    //SnackBar消失的时候调用
    @Override
    publicvoidonDismissed(Snackbarsnackbar,intevent){
    super.onDismissed(snackbar,event);

    Log.i("Test","SnackBar隐藏了!");

    }

    //SnackBar显示的时候调用
    @Override
    publicvoidonShown(Snackbarsnackbar){
    super.onShown(snackbar);

    Log.i("Test","SnackBar显示出来了!");
    }
    };

    }

运行结果:
这里写图片描述

(●’◡’●)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值