xamarin优化listView.ScrollTo

时间:2021-08-19 17:47:57

在xamarinz中关于listview的滚动,我这里有点小优化,我做了一个类似QQ的聊天页面,上面是一个listview,下面时一个editText,当在手机上使用时,发现在android平台下,如果有多条信息,点击editText时,会弹出键盘,editText会被推上去,我的listview也要跟随往上推,但是由于版本问题,listview的item并没有网上滚动到底部,于是我简单的在editText的Focused事件上添加滚蛋代码如下:

 txtMessage.Focused += TxtMessage_Focused;

 private void TxtMessage_Focused(object sender, FocusEventArgs e)
{
if (listChatMessage.Count > )
{
Device.BeginInvokeOnMainThread(() =>
{
listView.ScrollTo(listChatMessage.Last(), ScrollToPosition.End, false);
});
}
}

马上运行调试,在android上并没有效果,listview的item并没有滚动到底部,优化需要加延时才有效果,最终更改代码如下:

 txtMessage.Focused += TxtMessage_Focused;

 private void TxtMessage_Focused(object sender, FocusEventArgs e)
{
if (listChatMessage.Count > )
{
Task.Delay().ContinueWith((t) =>
{
Device.BeginInvokeOnMainThread(() =>
{
listView.ScrollTo(listChatMessage.Last(), ScrollToPosition.End, false);
});
});
}
}

在xamarin中很多这种的问题,有时候稍微延迟一下就好。