顶部Snackbar实现

实现一个能在顶部显示的snackbar


我们都知道谷歌官方的snackbar是只支持在底部显示的。但是有时候我们又想让snackbar在顶部显示,这时候我们可以修改一下官方的snackbar让其支持在顶部显示。

先来看下效果:

顶部Snackbar实现_第1张图片



要实现从顶部加载其实很简单,我们来看一下关键代码,这里用的是Android7.1的源码

//在源码中找到mView的声明,我们看到mView的类型是SnackbarLayout
private final ViewGroup mTargetParent;
    private final Context mContext;
    private final SnackbarLayout mView;
    private int mDuration;
    private Callback mCallback;
//我们再找到SnackbarLayout的源码,这里只截取了一部分,看到这里我们就明白了,SnackbarLayout就是snackbar顶层layout,所以如果想让snackbar在顶部显示,改变其Gravity为TOP即可

  public static class SnackbarLayout extends LinearLayout {
        private ImageView mIconView; 
        private TextView mMessageView;
        private Button mActionView;

        private int mMaxWidth;
        private int mMaxInlineActionWidth;

        public SnackbarLayout(Context context) {
            this(context, null);
        }

 }

项目地址:TSnackbar

你可能感兴趣的:(安卓开发)