You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Android Toast设置背景色丢失圆角及自定义字体实现方法

问题根因

直接调用SetBackgroundColor()给Toast根视图刷纯色时,会直接覆盖系统默认Toast自带的圆角背景Drawable,相当于把原有带圆角的背景替换成了无圆角的纯色色块,圆角效果自然会丢失。

圆角效果修复方案

不需要重写整个Toast布局,只要把纯色背景替换成自定义的带圆角的形状Drawable即可,具体实现:

  • 先创建带圆角的矩形Drawable,匹配你要的#98A5AD背景色:
var toastBgDrawable = new GradientDrawable();
toastBgDrawable.SetShape(ShapeType.Rectangle);
toastBgDrawable.SetCornerRadius(24); // 圆角半径可按需调整,单位为像素
toastBgDrawable.SetColor(Android.Graphics.Color.ParseColor("#98A5AD"));
  • 把这个Drawable设置为Toast视图的背景,替换原来的纯色设置逻辑:
Toast toast = Toast.MakeText(Application.Context, message, ToastLength.Short);
// 替换原来的toast.View.SetBackgroundColor(...)代码行
toast.View.Background = toastBgDrawable;
toast.SetGravity(GravityFlags.Center, 0, 0);
toast.Show();

这种方式生成的背景完全保留自定义圆角,不会被纯色覆盖。

自定义字体实现方法

系统默认Toast内部,承载文本的控件是ID为Android.Resource.Id.Message的TextView,只要拿到这个控件实例,加载自定义字体赋值即可,步骤:

  • 把字体文件(比如xxx.ttf)放到项目Assets/Fonts目录下,将文件的生成操作设置为AndroidAsset,确保打包时能正常读取。
  • 在Toast创建逻辑中,定位文本控件并绑定自定义字体:
Toast toast = Toast.MakeText(Application.Context, message, ToastLength.Short);
// 获取Toast内部的文本显示控件
var messageTv = toast.View.FindViewById<TextView>(Android.Resource.Id.Message);
// 从Assets加载自定义字体
var customTypeface = Typeface.CreateFromAsset(Application.Context.Assets, "Fonts/xxx.ttf");
messageTv.Typeface = customTypeface;

注意:不要直接给Toast的根视图设置Typeface属性,根视图是ViewGroup容器,字体属性只对文本类控件生效,必须定位到实际承载文本的TextView再设置。


内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 15:24:02