首页 > 移动平台 > 详细

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

时间:2015-03-09 12:59:42      阅读:347      评论:0      收藏:0      [点我收藏+]

在项目中想要实现一个头部的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提示

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

原文:http://my.oschina.net/simaben/blog/384237

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!