将WindowSoftInputMode设置为AdjustPan时出现问题

时间:2015-07-16 09:45:37

标签: xamarin xamarin.android xamarin.forms xamarin-studio xamarin.mac

我正在研究Xamarin表单项目。我的应用程序中有很多Entry字段,其中一个是弹出窗口,弹出窗口在设备屏幕的中心打开。滚动视图中的输入字段也很少。问题仅出在Android应用程序上。对于iOS,它的工作完美。 当我点击弹出窗口中的输入字段时,软键盘被打开,我的弹出窗口的用户界面受到干扰。所以,我决定设置 WindowSoftInputMode = SoftInput.AdjustPan 到我的主Activity。这解决了弹出窗口的UI问题,但现在当我点击其他输入字段时,我的![滚动视图停止滚动] (少数输入字段位于侧面滚动视图中)。我尝试使用AdjustResize并休息其他软输入,但没有用。 关于如何摆脱这个的任何想法?

Initial popup UI

softkey_board_open

softkey_board_closed

2 个答案:

答案 0 :(得分:3)

在Android Xamarin.Forms上,应用程序正在处理单个Android活动,因此全局设置WindowSoftInputMode。您可以执行依赖注入服务。在iOS上,它什么都不做,在Android上,它会将WindowSoftInputMode设置为您想要的值。然后在显示弹出窗口之前和之后使用它来设置WindowSoftInputMode

在Xamarin.Forms中Forms.Context是活动。

var window = ((Activity)Forms.Context).Window;
window.SetSoftInputMode(SoftInput.AdjustPan);

答案 1 :(得分:-1)

如果是

  

Xamarin Android

您可以直接从mainActivity访问窗口,如下所示:

Window.SetSoftInputMode(Android.Views.SoftInput.AdjustPan);

或在AndroidManifest.xml中

<activity android:name=".myActivity"
 android:label="@string/app_name"
 android:screenOrientation="sensorPortrait"
 android:windowSoftInputMode="adjustPan"/>