我有一个Xamarin.Forms活动。我通过以下方式将scrollview包裹在我的内容中:
<ScrollView
HorizontalOptions="Center"
VerticalOptions="Center">
当活动的自然高度高于显示大小时,这允许滚动。另一方面,当用户点击文本框并且弹出软键盘时,用户无法滚动以查看软键盘后面的问题。
在question for native android之后,我在我的样式文件中添加了:
<style name="MainTheme" parent="MainTheme.Base">
</style>
<!-- Base theme applied no matter what API -->
<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowSoftInputMode">stateVisible|adjustResize</item>
...
不幸的是,当软键盘启动时,这并没有给我我想要的滚动行为。
有多种方法可以做到这一点,但这个方法最多的是Xamarin精神:
Xamarin.Forms.Application.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);
您需要在MainActivity.cs中设置WindowSoftInputMode
。
这就是你如何做到的
[Activity(Label = "MyActivity", Theme = "@style/CustomTheme", WindowSoftInputMode = SoftInput.AdjustResize)]
或者在MainActivity的OnCreate()方法中放置一行。
Window.SetSoftInputMode(Android.Views.SoftInput.AdjustResize);