【问题标题】:Issue while setting WindowSoftInputMode to AdjustPan将 WindowSoftInputMode 设置为 AdjustPan 时出现问题
【发布时间】:2015-10-05 16:41:24
【问题描述】:

我正在开发 Xamarin 表单项目。我的应用程序中有许多条目字段,其中一个在弹出窗口中,弹出窗口在设备屏幕的中心打开。滚动视图中也很少有输入字段。该问题仅与 Android 应用程序有关。对于 iOS,它运行良好。 当我单击弹出窗口中的条目字段时,软键盘打开并且我的弹出窗口的 UI 受到干扰。所以,我决定设置 WindowSoftInputMode = SoftInput.AdjustPan 到我的主要活动。这解决了我的弹出窗口的 UI 问题,但是现在当我点击其他输入字段时,我的 ![滚动视图停止滚动](很少有输入字段在侧滚动视图中)。我尝试使用 AdjustResize 和休息其他软输入,但没有用。 关于如何摆脱这个的任何想法?

【问题讨论】:

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


    【解决方案1】:

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

    在 Xamarin.Forms 中 Forms.Context 是 Activity。

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

    【讨论】:

    • 你太棒了。
    • 2021年过时!!!
    【解决方案2】:

    万一

    Xamarin Android

    你可以直接从 mainActivity 访问 window 像这样:

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

    或在 AndroidManifest.xml 中

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

    【讨论】:

    • @Amrut 已经尝试过这种方法,但它不起作用,因为它在全局范围内设置它,从而改变了不需要它的页面上的行为。
    • 您是否介意再次阅读我的回复:如果是 Xamarin Android,并且@Amrut 正在谈论 XF,感谢您不喜欢我得到了一个新徽章
    • 那你为什么要为 Xamarin Forms 问题提供 Xamarin Android 答案?
    • 也许对某人有帮助
    猜你喜欢
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 2020-09-03
    相关资源
    最近更新 更多