Xamarin.Forms NavigationPage PushAsync 不滚动

Posted

技术标签:

【中文标题】Xamarin.Forms NavigationPage PushAsync 不滚动【英文标题】:Xamarin.Forms NavigationPage PushAsync not scrolling 【发布时间】:2017-08-26 19:59:07 【问题描述】:

我正在使用 MasterDetail 页面,并且可以从 Master 访问的内容页面很长。我正在 android 设备上尝试该应用程序,如果我访问其中一个页面创建一个新 NavigationPage,它们会正确显示,但是如果我将它们推送到导航堆栈中,或者如果我从另一个页面返回到堆栈中,滚动不再起作用。

这是创建NavigationPage的代码:

void OnItemSelected(object sender, SelectedItemChangedEventArgs e) 
    var item = e.SelectedItem as IMenuItem;
    if (item != null && item.SubmitPageType != null) 
        Detail = new NavigationPage((Page)Activator.CreateInstance(item.SubmitPageType));
        masterPage.ListView.SelectedItem = null;
        IsPresented = false;
    

这是我用来将同一页面推送到导航堆栈的代码

this.Navigation.PushAsync(new MyPage());

在 Xaml 中,我尝试在 ContentPage.Content 元素中使用 ScrollView,但它不起作用,并且在页面底部截断了我的部分布局。

有没有人在 NavigationPage 和内容滚动方面遇到过类似的问题?谁能帮帮我?

谢谢

【问题讨论】:

如何导航到页面无关紧要,滚动将由页面本身的内容决定。 我同意,这就是为什么我不明白为什么如果我直接从 MasterPage 访问页面,创建一个新的 NavigationPage,滚动工作,但如果我使用 PushAsync 方法访问同一页面,它不会不工作。两种情况下的页面和内容都是一样的。 【参考方案1】:

当我遇到类似问题时,自定义 NavigationPageRenderer 中的这段代码可以帮助我

[assembly: ExportRenderer(typeof(YOUR_CUSTOM_NAV_PAGE), typeof(NoAnimationNavigationPageRenderer))]
namespace CanPay.Mobile.Droid.Renderers

   public class NoAnimationNavigationPageRenderer : NavigationPageRenderer
   
       protected override void SetupPageTransition(FragmentTransaction transaction, bool isPush)
       
           transaction.SetCustomAnimations(0, 0, 0, 0);
       
   

【讨论】:

以上是关于Xamarin.Forms NavigationPage PushAsync 不滚动的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms 手势密码实现

Xamarin.Forms 和 Xamarin Native 有啥区别? [关闭]

如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色

Xamarin Forms Prism:prism ResourceDictionary 中已存在具有键“Xamarin.Forms.NavigationPage”的资源

Xamarin.Forms.Forms.Init(e) Onlaunched 中的 FileNotFoundExeception

如果调用方未使用 Xamarin.Forms,Xamarin 依赖项服务能否正常工作?