我有一个DataTemplate,它将一个滑块放在TabbedPage中的ListVIEw中.在Android上,滑块无法正确移动,从左向右滑动可激活TabbedPage滑动功能.如果滑块位于ListVIEw外部,则它可以正常工作.如何防止滑块的父控件处理拖动手势?
方法VIEwParent.requestdisallowIntercepttouchEvent(boolean)可能有帮助,但是我会做哪个渲染器等?
Video of issue with the slider
解决方法:
创建一个SlIDerRenderer,然后在dispatchtouchEvent(MotionEvent e)中调用RequestdisallowIntercepttouchEvent(boolean),它可以解决这个问题,这里是我的代码:
主页:
var tabsXaml = new TabbedPage { Title = "Working with ListVIEw" }; tabsXaml.Children.Add(new BasicListXaml { Title = "Basic", Icon = "icon.png" } ); tabsXaml.Children.Add(new JustVIEw { Title = "JustVIEw", Icon = "icon.png" }); tabsXaml.Children.Add(new UnevenRowsXaml { Title = "UnevenX", Icon = "icon.png" }); tabsXaml.Children.Add(new SlIDerPage { Title = "SlIDerPage", Icon = "icon.png" }); MainPage = tabsXaml;
TabbedPage中的SecondPage:
<ContentPage.Content> <local:MyListVIEw x:name="ListVIEw" ItemSelected="OnItemSelected"> <local:MyListVIEw.ItemTemplate> <DataTemplate> <VIEwCell> <StackLayout> <local:MySlIDer HorizontalOptions="Fill"/> </StackLayout> </VIEwCell> </DataTemplate> </local:MyListVIEw.ItemTemplate> </local:MyListVIEw></ContentPage.Content>
SlIDererRenderer:
public overrIDe bool dispatchtouchEvent(MotionEvent e) { switch (e.Action) { case MotionEventActions.Down: Parent.Parent.Parent.Parent.Parent.Parent.Parent.RequestdisallowIntercepttouchEvent(true); break; case MotionEventActions.Move: //This is the core of the problem!!! Parent.Parent.Parent.Parent.Parent.Parent.Parent.RequestdisallowIntercepttouchEvent(true); break; case MotionEventActions.Up: break; default: break; } return base.dispatchtouchEvent(e); }
您必须调用RequestdisallowIntercepttouchEvent(true)方法.我的代码中的Parent.Parent.Parent.Parent.Parent.Parent.Parent意味着Xamarin.Forms.Platform.AndroID.PageRenderer,SlIDer在video中无法正常工作的原因是页面(在我的代码中是JustVIEw) )阻止滑块处理拖动手势.
总结以上是内存溢出为你收集整理的android – Xamarin在TabbedPage中的ListView中表单滑块无法正确滑动全部内容,希望文章能够帮你解决android – Xamarin在TabbedPage中的ListView中表单滑块无法正确滑动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)