在xamarinz中关于listview的滚动,我这里有点小优化,我做了一个类似QQ的聊天页面,上面是一个listview,下面时一个editText,当在手机上使用时,发现在android平台下,如果有多条信息,点击editText时,会弹出键盘,editText会被推上去,我的listview也要跟随往上推,但是由于版本问题,listview的item并没有网上滚动到底部,于是我简单的在editText的Focused事件上添加滚蛋代码如下:
1 txtMessage.Focused += TxtMessage_Focused; 2 3 private void TxtMessage_Focused(object sender, FocusEventArgs e) 4 { 5 if (listChatMessage.Count > 0) 6 { 7 Device.BeginInvokeOnMainThread(() => 8 { 9 listView.ScrollTo(listChatMessage.Last(), ScrollToPosition.End, false); 10 }); 11 } 12 }
马上运行调试,在android上并没有效果,listview的item并没有滚动到底部,优化需要加延时才有效果,最终更改代码如下:
1 txtMessage.Focused += TxtMessage_Focused; 2 3 private void TxtMessage_Focused(object sender, FocusEventArgs e) 4 { 5 if (listChatMessage.Count > 0) 6 { 7 Task.Delay(100).ContinueWith((t) => 8 { 9 Device.BeginInvokeOnMainThread(() => 10 { 11 listView.ScrollTo(listChatMessage.Last(), ScrollToPosition.End, false); 12 }); 13 }); 14 } 15 }
在xamarin中很多这种的问题,有时候稍微延迟一下就好。