如何在Android的AdjustPan配置中(仅)检测软键盘是否被关闭?

时间:2018-12-15 21:54:55

标签: android android-webview android-softkeyboard adjustpan

资深开发人员,我面临着一个挑战,即我无法弄清楚该如何解决,并且我知道与我的问题相关的成千上万种可能的问题或黑客入侵:

但是,几乎所有的连接器都可以检查屏幕的大小,我可以解释我为什么要找到解决方案的问题。

我已经开发混合应用程序已有一段时间了,而我只有一个小问题:

preview

不幸的是,在某些设备中,最后一行是部分可见的,我知道我应该在jQuery中添加什么代码才能正确显示它:

$("input[type=number]").click(function(){
    $("#divCustomTime").css({top: -200, position:'absolute'});
});

但是,如果以不按 enter 的另一种方式关闭了键盘,则div的位置将无法重定位到其先前的位置,我也找不到任何方法来破解它还是棘手的,我尝试了不同的方法来检测关闭事件,例如:

  • 按下返回按钮(根本不触发)。
  • 用于检测isAcceptingText的线程。它根本没有用。我在C#中尝试过的其中一种代码的示例:

    [Export]
    [JavascriptInterface]
    public void KeyboardStatus()
    {
        var timer = new System.Threading.Timer(callback, (InputMethodManager)context.GetSystemService(Context.InputMethodService), TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
    }
    
    private static void callback(object state)
    {
        if ((InputMethodManager)state.IsAcceptingText) {
    
        } else {
            //never happens
        }
    }
    

    我从哪里得到这个主意?

    https://stackoverflow.com/a/52693953/2889347

    我还尝试了一种方法hideSoftInputFromWindow的变体,但没有用。

您可能会问,为什么不使用adjustResize选项?

检测起来更容易,但是我知道整个应用程序配置错误并且失真,以至于我应该使用大量CSS和JS,以便或多或少将其配置为不看起来很糟糕,这就是为什么我选择 pan 而不选择 size 的原因。

此外,我想强调一点,我正在使用 Xamarin.Android 进行开发,但我认为这可能不会影响编程语言。

有人知道如何检测吗?谢谢。

1 个答案:

答案 0 :(得分:0)

不能。不可靠。没有API可以告诉用户软键盘何时隐藏自身,甚至框架隐藏起来的时间。人们尝试过使用各种各样的技巧来改变视图的大小,但是它们都有误报和误报,并且诸如分屏之类的一些功能会完全破坏它。