改变Xamarin.Forms RefreshView中的加载指标偏移。

问题描述 投票:0回答:1

在Xamarin.Forms (iOS Android)上,我需要修改 载荷指示器 在RefreshView上的位置。我需要增加偏移量,所以如果你有一个条形图与ScrollView-RefreshView组合重叠,并触发pullOnRefresh,那么该指标是可见的。

在顶部边缘加载指示器

编辑:感谢 小蒋 - MSFT- Android解决方案

我也实现了xamarin.iOS的解决方案。

[assembly: ExportRenderer(typeof(RefreshView), typeof(CustomRefreshViewRenderer))] 
namespace CustomRefresh.iOS {
public class CustomRefreshViewRenderer : RefreshViewRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<RefreshView> e)
    {
        base.OnElementChanged(e);

        foreach (var nativeView in Subviews)
            updateRefreshSettings(nativeView);

    }

    void updateRefreshSettings(UIView view) {
        if (view is UIScrollView)
        {
            var scrollView = view as UIScrollView;
            if (scrollView.RefreshControl != null)
            {
                var bounds = scrollView.RefreshControl.Bounds;
                scrollView.RefreshControl.Bounds = new CGRect(bounds.X, -(100), bounds.Width, bounds.Height);
            }
        }
        //add more scrollable view types
    }
}

}

xamarin.forms xamarin.android xamarin.ios custom-renderer
1个回答
0
投票

你可以自定义一个 RefreshViewRenderer 以实现这一目标。

安卓系统 ,有一个 MOriginalOffsetTop 来修改加载指标的偏移量。此外,还可以使用SetProgressViewOffset来设置指标的起始和结束位置。

代码如下。

using Android.Content;
using RefreshViewDemo.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(RefreshView), typeof(CustomRefreshViewRenderer))]
namespace RefreshViewDemo.Droid
{
    public class CustomRefreshViewRenderer : RefreshViewRenderer
    {

        public CustomRefreshViewRenderer(Context context) : base(context)
        {
            MOriginalOffsetTop = 100;

           // SetProgressViewOffset(true, 100, 101);
        }

    }
}

iOS 负载指标属于 UIRefreshControlUIScrollView 没有直接的方法来改变它的偏移量 . 除非在Renderer中覆盖所有内容视图,然后可以实现。你可以参考这个 Xamarin.FormsXamarin.Forms.Platform.iOSRenderersRefreshViewRenderer.cs 来了解 RefreshView 是由......组成的。

共享代码是基于这个官方示例。https:/docs.microsoft.comen-ussamplesxamarinxamarin-forms-samplesuserinterface-refreshviewdemo。

对于Android,只需要创建一个 CustomRefreshViewRenderer 类在安卓解决方案中的 。

的效果。SetProgressViewOffset(true, 100, 101) 它似乎是指标不动。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.