2

据我了解,软键盘实际上是一个对话窗口,位于所有其他应用程序窗口的基础上。当应用程序请求键盘时,应用程序的 ViewRoot(和窗口)将调整到屏幕顶部,从而使键盘可见。

到现在为止还挺好...

我不明白的是键预览(显示放大的按下键的蓝色视图 - 它实际上是一个 TextView)如何显示在应用程序窗口的顶部。毕竟,键盘的窗口位于应用程序窗口的下方,所以我假设在该窗口上创建的任何视图都只会存在于应用程序窗口的后面。这个预览 TextView 是否有任何特殊特征?视图的 z 顺序是根据它们的创建顺序决定的吗?(所以即使两个视图被绘制到同一个表面,它们的 z 顺序也不同?)

4

1 回答 1

0

事实证明,键盘的布局实际上在顶部。尽管它的窗口可能在应用程序启动之前就已创建,但它是一个对话框窗口,这意味着它被添加到窗口层次结构的顶部。这里唯一的问题是键盘的窗口是整个屏幕的大小(键盘绘制在底部,黑色背景在其上方)。由于它的窗口是顶部窗口,因此人们会期望键盘的黑色背景出现在激活它的应用程序的顶部......

解决方法:键盘的窗口有一个半透明的属性!事实证明,由于这个事实,没有绘制黑色背景,这意味着可以看到应用程序显示的任何内容。我花了很长时间才弄清楚那个...

于 2012-06-27T06:06:03.510 回答