码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-03-09 13:02:35      阅读:153      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!