Android中如何指定SnackBar在屏幕的位置及小问题解决

Android中如何指定SnackBar在屏幕的位置及小问题解决,第1张

概述Android指定SnackBar在屏幕的位置Snackbar常以一个小的d出框的形式,出现在手机屏幕下方或者桌面左下方,并且是在屏幕所有层的最上方。如果要指定它在屏幕出现的位置,可以把SnackBar放置在android.support.design

AndroID指定Snackbar在屏幕的位置

Snackbar 常以一个小的d出框的形式,出现在手机屏幕下方或者桌面左下方,并且是在屏幕所有层的最上方。如果要指定它在屏幕出现的位置,可以把Snackbar放置在androID.support.design.Widget.CoordinatorLayout内。

在relativeLayout里添加CoordinatorLayout如下:

<androID.support.design.Widget.CoordinatorLayout androID:layout_wIDth="match_parent" androID:layout_height="200dp" androID:ID="@+ID/myCoordinatorLayout" androID:layout_alignParenttop="true" androID:layout_alignParentleft="true" androID:layout_alignParentStart="true"></androID.support.design.Widget.CoordinatorLayout>

调用Snackbar.make()把CoordinatorLayout作为第一个参数,如下:

final VIEw vIEwPos = findVIEwByID(R.ID.myCoordinatorLayout); Snackbar.make(vIEwPos,R.string.snackbar_text,Snackbar.LENGTH_LONG)       .setAction(R.string.snackbar_action_undo,showListener)       .show();

可以通过改变CoordinatorLayout的位置来改变Snackbar的位置,如设置androID:paddingBottom="16dp"。

Snackbar位置显示的一点小问题

compile 'com.androID.support:design:23.4.0'

AndroID Studio 新建项目会默认有个展示Snackbar的方法,一直没用。前两天某微信公众号看到
http://www.jianshu.com/p/996dc15d21be 这个文章。写得很好,很全面,基本功能,样式定制都有写到。

其中有处写到自定义显示位置的,感觉很有必要,因为这个和Toast不一样,Toast会显示在软键盘上,而这个会被软键盘挡住。

VIEwGroup.LayoutParams vl = v.getLayoutParams();        CoordinatorLayout.LayoutParams cl = new CoordinatorLayout.LayoutParams(vl.wIDth,vl.height);                       cl.gravity = Gravity.CENTER;//设置显示位置居中        v.setLayoutParams(cl);

但是当将位置设置为 

Gravity.top

设置偏移距离却无法生效

Rect frame = new Rect();vIEw.getwindowVisibledisplayFrame(frame);l.topmargin =frame.top;

原来是有的VIEw的parent是继承的 FrameLayout这点得注意,需要

FrameLayout.LayoutParams l = (FrameLayout.LayoutParams) v.getLayoutParams();

当然自己写显示在上边很麻烦的,还要处理显示及隐藏动画

在Snackbar.Java的  animateVIEwIn() 和  animateVIEwout() 里都有规定

Github上有个很不错的  https://github.com/AndreID/TSnackbar

是照着系统上的来做的,然后又增加不少小功能。先记一下,如果项目用到就把这个下载来改改

在  design_layout_snackbar.xml  里面有句

androID:layout_gravity="bottom"

这个一定要记得改成  top

这样就能在上面显示了。

然后就是相应的动画  R.anim.design_snackbar_in  和  R.anim.design_snackbar_out

不过这两个都是在

Build.VERSION.SDK_INT <Build.VERSION_CODES.ICE_CREAM_SANDWICH//(14)

时调用的,所以可以删掉,不用改

刚好看到系统的final voID showVIEw()方法 public voID ondismiss(VIEw vIEw)有一行

vIEw.setVisibility(VIEw.GONE);

但是在Tsnackbar里把这句删掉了,好吧看来得注意一下还有没别的大区别.

总结:如果长期显示在顶部可以用Github的项目,否则用design库就行

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。

您可能感兴趣的文章:Android重要控件SnackBar使用方法详解Android提醒微技巧你真的了解Dialog、Toast和Snackbar吗Android 开发之Dialog,Toast,Snackbar提醒Android中Snackbar的使用方法及小技巧 总结

以上是内存溢出为你收集整理的Android中如何指定SnackBar在屏幕的位置及小问题解决全部内容,希望文章能够帮你解决Android中如何指定SnackBar在屏幕的位置及小问题解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1142864.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存