Xamarin.forms Forms ScrollView ScrollToAsync行为
在Android上运行ScrollView的ScrollToAsync功能时,我遇到了一些问题,目前还没有在iOS上测试。 我使用的是Xamarin.Forms版本2.5.1.444934,使用的是.Net标准 在Android Emulator(8.0,API26)和Google Pixel(8.1 API27)上进行测试,两者都有相同的问题 我使用NavigationPage和Navigation.PushAsync在页面之间移动(因此每个页面上都有导航栏) 我想创建一个自动填充字段控件,用户键入前几个字母,然后在数据库/静态字符串列表中查找结果,并在下面显示结果,供用户单击/点击。 我使用复合控件(下面标记为有趣的框架内容)完成了这项工作。 我遇到的问题是滚动视图以显示结果 我的页面具有以下布局层次结构:-Xamarin.forms Forms ScrollView ScrollToAsync行为,xamarin.forms,xamarin.android,Xamarin.forms,Xamarin.android,在Android上运行ScrollView的ScrollToAsync功能时,我遇到了一些问题,目前还没有在iOS上测试。 我使用的是Xamarin.Forms版本2.5.1.444934,使用的是.Net标准 在Android Emulator(8.0,API26)和Google Pixel(8.1 API27)上进行测试,两者都有相同的问题 我使用NavigationPage和Navigation.PushAsync在页面之间移动(因此每个页面上都有导航栏) 我想创建一个自动填充字段控件,用
ContentPage
StackLayout
ScrollView
StackLayout
Frame (some label and entry fields inside a stack layout)
Frame (some label and entry fields inside a stack layout)
Frame (some label and entry fields inside a stack layout)
Frame (the interesting one that deals with scrolling)
StackLayout
Heading Label
StackLayout
Label x:Name="ScrollToLabel"
Entry x:Name="ScrollToEntry"
Grid x:Name="ScrollToGrid"
Entry x:Name="Hidden" Text="I should stay visible as you type"
/StackLayout
/StackLayout
/Frame
Frame (some label and entry fields inside a stack layout)
Frame (some label and entry fields inside a stack layout)
/StackLayout
/ScrollView
StackLayout
Button Text = Done
/StackLayout
/StackLayout
/ContentPage
当用户单击/轻触ScrollToEntry时,键盘将打开并将控件平移到键盘上方(到目前为止还可以)。
当用户开始在ScrollToEntry中输入时,代码将使用最多5个结果填充ScrollToGrid。
在这一点上,我想确保网格结果对于用户点击是可见的。
我尝试了两种不同的选项,ScrollToAsync(ScrollToLabel,Start)和ScrollToAsync(Hidden,MakeVisible)
这两种工作都不是我想要的100%的时间
ScrollToAsync(ScrollToLabel, Start)
如果ScrollToEntry位于屏幕底部,则导航栏将隐藏,视图向上平移过远。
滚动标签现在已脱离屏幕顶部。
单击/轻触第二个字母时,导航栏将恢复并正确滚动,滚动标签位于屏幕顶部。
如果ScrollToEntry位于屏幕顶部附近,则导航栏不会隐藏,并且可以正确滚动
ScrollToAsync(Hidden, MakeVisible)
这是我的首选选项,因为它只会滚动到需要显示所有结果的地方(不是一直滚动到顶部)。
这比第一个更糟糕。
在大多数情况下,它根本不会滚动,我假设它认为它已经可见,但实际上在键盘后面?
如果它确实滚动,隐藏的标签仍然不会显示(我使用HeightRequest=“0”版本和可见版本进行了测试,两者结果相同)
我尝试使用下面的代码更改调整大小
Application.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);
Application.Current.On().UseWindowsOfInputModeAdjust(WindowsOfInputModeAdjust.Resize);
2个问题,
1.由于调整了大小,“完成”按钮现在位于键盘上方,占用了空间。
2.单击“硬件后退”按钮(而不是“完成”或“导航后退”按钮)时,上一个视图现在在键盘所在的位置有一个空白。
如果使用“完成”或“返回导航”,屏幕最初显示为空白,但随后刷新为全屏
我已经创建了一个示例应用程序来突出显示问题(默认情况下使用平移,而不是调整大小)。
这是我使用的布局的最简单版本
是我做错了什么,还是就是这样?如果它是如何工作的,这一定是一个错误?如果我做错了,有人能告诉我什么或建议其他方法吗?你好,你解决了吗?嗨,没有。问题仍然存在。升级到xamarin.forms v3并没有解决问题。而且,在iOS上,它似乎根本没有滚动。