再實現的過程中發現,如果直接通過修改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提示