2016-11-23 96 views
0

我有一个Xamarin.Forms应用 - iOS上的一切运作良好,但我有一个ListView的问题。在iOS上Xamarin.Forms ListView中的最后一项是不可达

更新集合时,ListView被更新,我可以看到新项目已被添加到列表视图的顶部,但不知何故视图中的最后一个项目将不再显示(!!!)我下降到ListView的结尾,并尝试拉动ListView,我可以看到最后一个项目在那里,但它没有默认显示,并且无法访问我无法打开它。

我试图再次重新绑定集合,做BeginRefresh和EndRefresh但没有任何帮助。任何人有这个问题?或者我如何强制列表视图再次呈现?

这是问题的一个例子,你可以在这里看到的最后一个项目是“测试信息”。 (你可以看到框架不完整 - 底部的行没有显示)。用户认为这是他的最后一条消息: enter image description here

虽然,如果我拉的ListView我可以开始在ListView看到最后的消息:

enter image description here

但是,如果我让我的手指离开屏幕后,列表视图将返回以显示第一张图像,而最后两条消息不见了。

顺便说一句 - 另外,如果我添加了两个新的消息,则最后两个CellViews将不会显示等等 - 这个问题只有当我添加新的消息到的ObservableCollection发生。这个问题只发生在iOS上(在Android上它按预期工作)。

感谢, 赛义夫。

+0

我最近遇到这个问题,但只有iOS,Android工作正常。作为一种解决方法,我根据设备屏幕高度和其他视图计算了ListView的可见高度,并明确设置了HeightRequest。但这是一个相当丑陋的黑客。 – samgak

+0

我通过更新Xamarin.Forms版本到2.3.2.127来解决它。 – iseif

回答

0

我通过更新Xamarin.Forms版本2.3.2.127固定它。

0

我有一个ListView显示mnessages,当增加新的(在末尾)我强迫向下滚动列表...也许是有用的你...

var lastMessage = this.listViewMensajes.ItemsSource.Cast<object>().LastOrDefault(); 
       if (null != lastMessage) 
       { 
        if(Animated) 
        { 
         await Task.Delay(500); 
         this.listViewMensajes.ScrollTo(lastMessage, ScrollToPosition.Start, true); 
        } 
        else 
        { 
         this.listViewMensajes.ScrollTo(lastMessage, ScrollToPosition.Start, false); 
        } 

       } 

动画标志是作秀幻灯片效果或不...

+0

感谢消息,这个解决方案部分工作,当我做了ScrollTo我看到了最后一条消息,但是当我再次向上滚动时,最后的消息又一次消失了。 – iseif

0

您还可以添加一个页脚与一个空白框观点是这样的:

ListView lv = new ListView{ 
    Footer = new BoxView{ 
    WidthRequest = 30 
    } 
} 

而且你只能添加这在iOS项目。

+0

感谢您的评论 - 这不适合我。 – iseif

相关问题