1、Android自带的Toast样式固定,这里我们对其简单的封装。自定义一个适应我们需求的Toast

privatevoidcreateToastWindow(Stringtext){LayoutInflaterinflater=LayoutInflater.from(App.getContext());Viewview=inflater.inflate(R.layout.toast_layout,null);TextViewtv=(TextView)view.findViewById(R.id.pop_view);tv.setText(text);Toasttoast=newToast(getApplicationContext());view.setLayoutParams(newLinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT,android.widget.LinearLayout.LayoutParams.MATCH_PARENT));toast.setView(view);toast.setGravity(Gravity.TOP,0,(int)App.getContext().getResources().getDimension(R.dimen.titlebarHeight));toast.show();}

这段代码即完成此功能,toast_layout.xml就是我们toast的界面,这里我们可以实现我们想要的任何效果,也可以显示在屏幕的任何位置。

2、Android的Taost机制是建立在系统级上的,不是依托那个界面的,这样会导致我们的Toast会重复显示。倘若我们不断点击一个按钮然后Toast会一直显示,并且一个接一个需要等许久才能消失。这里我们来解决此问题。

解决此问题首先需要在Activity中定义一个Toast对象,我想这里一般人都会封装在基类中,本人推荐这样做。

privateToasttoast;

然后穿件Toast的函数变成如下所示

privatevoidcreateToastWindow(Stringtext){LayoutInflaterinflater=LayoutInflater.from(App.getContext());Viewview=inflater.inflate(R.layout.toast_layout,null);TextViewtv=(TextView)view.findViewById(R.id.pop_view);tv.setText(text);if(toast==null){Toasttoast=newToast(getApplicationContext());}view.setLayoutParams(newLinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT,android.widget.LinearLayout.LayoutParams.MATCH_PARENT));toast.setView(view);toast.setGravity(Gravity.TOP,0,(int)App.getContext().getResources().getDimension(R.dimen.titlebarHeight));toast.show();}

和上面相比就改变了这里

if(toast==null){Toasttoast=newToast(getApplicationContext());}

这样我们界面在拥有一个Toast的时候则不会去不断的创建Toast,同时Toast的显示的文字会被改变。

到此比较简单的自定义Toast和解决Toast的重复显示的问题得到解决,这里还是用了原声的Toast的机制,只不过是在此基础上稍作控制,当然这也能满足我们大多数时候的需求了。但若你想控制Toast的显示进入退出动画,那你需要深入了解Toast的机制,查看其源码重写Toast这样才可以,主要方法如下:

params = new WindowManager.LayoutParams();

params.windowAnimations = R.anim.enter;


更多相关文章

  1. ListView的一些属性
  2. 在Android中实现全屏显示的方法
  3. MT6573默认锁屏界面修改
  4. android中 检查网络连接状态的变化,无网络时跳转到设置界面
  5. Android(安卓)Studio的.gitignore以及gitignore无效的解决
  6. 在android上使用ASCII显示特殊符号
  7. android中常见的错误及解决办法
  8. android 软键盘隐藏 activity初始化时edittext聚焦
  9. Android(安卓)远程链接 daemon not running 解决方法

随机推荐

  1. Android -- TypedArray
  2. Android(安卓)3.2 联机测试adb驱动如何安
  3. Android控件开发之一----TextView
  4. Android Studio 默认debug证书位置在哪里
  5. Android短信欺诈(Smishing)漏洞
  6. Android 不支持 SYSV IPC (SYSV IPC)
  7. Android内存泄露检测(LeakCanary)
  8. 2014-11-6Android学习------Android(安卓
  9. Android OpenGL ES学习资料
  10. Android 开发在Eclipse提示信息 This ele