【问题标题】:After android text keyboard hided custom keyboard displayed twiceandroid文本键盘隐藏后自定义键盘显示两次
【发布时间】:2017-04-08 20:24:00
【问题描述】:

在我的活动课程中,我使用自定义键盘和安卓软文本键盘。 Android 文本软键盘调整活动布局。如果我在打开软键盘的同时打开自定义键盘,最后一个会隐藏并且布局会向后扩展。但是我在通话后立即打开自定义键盘

InputMethodManager imm = (InputMethodManager)context.GetSystemService(Context.InputMethodService);
            imm.HideSoftInputFromWindow(view.WindowToken, 0);

这里的视图是带有自定义键盘的视图。 当自定义键盘绘制两次时,我会遇到问题:

  1. 当android软键盘被隐藏,但布局还没有展开回来。在这种情况下,自定义键盘会出现在屏幕的上半部分。
  2. 布局展开后。在这种情况下,自定义键盘会出现在屏幕的下半部分。

我想要做的是以某种方式避免两个键盘同时出现。 在活动代码中,我只使用 SoftInput.StateAlwaysHidden WindowSoftInputMode。 SoftInput.AdjustPan 不方便,因为在这种情况下,某些视图可以被 android 键盘隐藏。

【问题讨论】:

    标签: xamarin.android android-softkeyboard custom-keyboard


    【解决方案1】:

    经过数小时的互联网搜索,终于找到了答案。 Pspdfkit 有great post

    经过小调查,它已在 C# 中的 Oncreate 方法中重写:

        private View decorView;
        private int lastVisibleDecorViewHeight = 0;
        decorView = Window.DecorView;
        decorView.ViewTreeObserver.GlobalLayout += (sender, args) =>
            {
                Rect windowVisibleDisplayFrame = new Rect();
                decorView.GetWindowVisibleDisplayFrame(windowVisibleDisplayFrame);
                int visibleDecorViewHeight = windowVisibleDisplayFrame.Height();
                if (lastVisibleDecorViewHeight != 0)
                {
                    if (lastVisibleDecorViewHeight > visibleDecorViewHeight)
                    {
                        OnSoftKeyboardShown();
                    }
                    else if (lastVisibleDecorViewHeight < visibleDecorViewHeight)
                    {
                        OnSoftKeyboardHidden();
                        if (!isAndroidSoftKeyboardShown && customKeyboardRequested)
                        {
                            Keyboard.RequestCustomKeyboard(requestedCustomKeyboardType);
                            customKeyboardRequested = false;
                        }
                    }
                }
                lastVisibleDecorViewHeight = visibleDecorViewHeight;
            };
    

    希望这对有类似问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 2014-11-06
      相关资源
      最近更新 更多