在项目中想要实现一个头部的toast提示效果,类似下图
再实现的过程中发现,如果直接通过修改Toast的View布局的父控件宽度是无法实现效果的,后来是通过直接用代码指定父控件内部的textview的宽度实现了。下面是具体的代码:
private static void makeToast(String msg) { if (toastView == null) { LayoutInflater inflater = (LayoutInflater) AppApplication.getInstance().getSystemService(Context.LAYOUT_INFLATER_SERVICE); params = new LinearLayout.LayoutParams(AppApplication.mScreenWidth, ViewGroup.LayoutParams.MATCH_PARENT); toastView = inflater.inflate(R.layout.toast_custom_prompt, null); } TextView tv = (TextView) toastView.findViewById(R.id.tvTitleToast); tv.setLayoutParams(params); tv.setText(msg); toast = new Toast(AppApplication.getInstance()); float hOffset = AppApplication.getInstance().getResources().getDimension(R.dimen.common_title_height); toast.setGravity(Gravity.TOP, 0, (int) hOffset); toast.setDuration(Toast.LENGTH_LONG); toast.setView(toastView); toast.show(); }
上面的方式使用到了我自己写的一个计算屏幕宽高的小方法:
private void calcScreenSize() { DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); mScreenWidth = dm.widthPixels; mScreenHeight = dm.heightPixels; AppApplication.mScreenWidth = mScreenWidth; AppApplication.mScreenHeight = mScreenHeight; }
通过上面的步骤就能在标题栏下方显示一个自定义的toast提示 |