Android:IME 处于 Activity 状态时的布局是什么?

标签 android keyboard android-layout popupwindow

可能有一些背景:当用户单击它时,我试图在可滚动的全屏 EditText 上方显示一个特定的键盘 View 。问题是如果光标位于 EditText 的底部,它会被弹出的键盘 View 隐藏。

与常规 IME View 的明显区别在于,IME View 将 EditText 推到顶部并让用户在该顶部区域滚动整个 EditText .键盘 View 位于底部。一切都是可见和可访问的。这也是我想通过弹出窗口实现的目标。

因此,我的问题是:当常规 IME 可见时,布局是什么样的?我不需要动画(如果很难做我可以跳过那部分)。

我尝试遍历布局层次结构以查看有何不同。这是 IME 可见的:

root: com.android.internal.policy.impl.PhoneWindow$DecorView
  android.widget.LinearLayout
    android.widget.FrameLayout
      android.widget.TextView
    android.widget.FrameLayout               #1
      android.widget.RelativeLayout
        android.widget.ScrollView
          android.widget.EditText
        com.mytest.KeyboardView

这里没有输入法,我的弹出 View 可见:

root: com.android.internal.policy.impl.PhoneWindow$DecorView
  android.widget.LinearLayout
    android.widget.FrameLayout
      android.widget.TextView
    android.widget.FrameLayout               #1
      android.widget.RelativeLayout
        android.widget.ScrollView
          android.widget.EditText
        com.mytest.KeyboardView

显然,没有区别。 IME 真的不见了吗?

为了更容易理解,我用“#1”标记了我的应用程序,因此 RelativeLayout 是我的 XML 布局中的根元素。

谁能帮帮我?如果有人准备好了 XML 样式的布局,我会非常高兴看到它。

更新

到现在为止,我认为我认为 IME View 会将自己放入 Activity 的布局层次结构中是错误的。

与此同时,我试图让 PopupWindow 工作,但无法想出解决 EditText 中隐藏光标问题的方法。

因此,让我问一下:IME View 是如何出现的,或者它是如何融入整体显示的?它如何将自身滚动到编辑字段下方并将编辑字段向上移动并使其按原样滚动?

最佳答案

似乎无法访问 IME。或者至少它不能通过应用程序以任何方式访问。

我现在对我的 EditText 和键盘有一个相当静态的 View 。键盘不会悬停在屏幕上,也不会出现任何其他花哨的东西。它安装在 EditText 下方。就是这样。它看起来并不壮观或任何东西,但我们在此同意用户可能不会输入长篇故事。

关于Android:IME 处于 Activity 状态时的布局是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085274/

相关文章:

python - 如何修复此与 Python 中的模块相关的错误?

cordova - ionic / Cordova /Phonegap : Is there a way to disable Emoji-Keyboard on iOS and Android?

android - 为包含的布局 android 指定文本颜色

android - asmack如何知道消息发送失败

android - Android YouTube数据API

android - 无法隐藏 ActionBar (Android)

Java 对未知泛型的反射(reflection)

flutter - 在 Flutter 升级 2.2.0 之后,包含文本字段的 ShowModalBottomSheet 被键盘隐藏

android - 如何在布局xml中创建一个空白区域

android - 在 android 11 上,状态栏不会隐藏