您的位置:首页 > 移动开发 > Android开发

Android自定义Toast宽度无法设置问题解决

2015-10-19 01:06 1376 查看
在项目中想要实现一个头部的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提示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: