xamarin优化listView.ScrollTo

  在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中很多这种的问题,有时候稍微延迟一下就好。

原文地址:https://www.cnblogs.com/zuimengaitianya/p/6141727.html