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

如何移除Xamarin.Forms中HoloCircularProgressBar的方形标记

解决Xamarin.Forms安卓自定义进度条起始方形标记问题

我之前也折腾过这个自定义进度条的坑,刚好能给你点实用的解决思路!你提到用IsMarkerEnabled只去掉了起始标记点,但还有残留的方形标记,大概率是因为默认的ProgressBar Drawable或者自定义控件的绘制逻辑里还保留了相关代码,咱们一步步来解决:

1. 排查自定义ProgressBar的绘制逻辑

如果你是跟着那篇文章实现的自定义安卓ProgressBar,先去检查它的OnDraw方法(或者对应的绘制代码)。有些版本的示例里会额外绘制一个起始方块,哪怕IsMarkerEnabled设为false,可能还有漏网的代码。比如类似这样的:

// 假设是C#的自定义ProgressBar类
protected override void OnDraw(Canvas canvas)
{
    base.OnDraw(canvas);
    if (IsMarkerEnabled)
    {
        // 这里就是绘制起始方形标记的代码
        canvas.DrawRect(0, 0, MarkerWidth, Height, MarkerPaint);
    }
}

如果有这段,要么确保IsMarkerEnabled确实被设为false,要么直接把这段绘制标记的代码删掉,从根源上移除标记。

2. 替换默认的ProgressDrawable

原生ProgressBar的默认Drawable可能自带一些样式标记,哪怕禁用了IsMarkerEnabled,也可能残留视觉元素。咱们可以直接替换成完全自定义的Drawable,彻底控制进度条的外观:
在Xamarin.Forms的自定义渲染器里,添加这段代码:

protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ProgressBar> e)
{
    base.OnElementChanged(e);
    if (Control == null) return;

    // 先禁用标记
    Control.IsMarkerEnabled = false;

    // 创建自定义背景和进度层
    var backgroundShape = new ShapeDrawable(new RectShape());
    backgroundShape.Paint.Color = Android.Graphics.Color.LightGray; // 背景色

    var progressShape = new ShapeDrawable(new RectShape());
    progressShape.Paint.Color = Android.Graphics.Color.Blue; // 进度颜色

    // 组合成LayerDrawable
    var layerDrawable = new LayerDrawable(new Drawable[] { backgroundShape, progressShape });
    layerDrawable.SetId(0, Android.Resource.Id.Background);
    layerDrawable.SetId(1, Android.Resource.Id.Progress);

    // 替换默认的Drawable
    Control.ProgressDrawable = layerDrawable;
}

这样进度条就会变成纯矩形的样式,完全没有多余的标记。

3. 检查原生样式影响

如果上面两步还没解决,可能是你给ProgressBar设置了原生安卓的样式,有些系统样式默认带标记。可以尝试在渲染器里设置一个不带标记的基础样式:

Control.SetStyle(Android.Resource.Style.Widget_Holo_ProgressBar_Horizontal, null);

再配合前面的Drawable替换,应该就能彻底解决问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:14:57