我有一个 Android 应用程序(全屏、横向),我有两个视图,一个是FrameLayout
始终可见的,一个是LinearLayout
. 我立即将可见性设置LinearLayout
为View.GONE
。当用户点击 上的按钮时,我在toFrameLayout
上设置了可见性,并使用来在中的 an 上显示软输入。这导致两个视图都向上移动,使得 EditText 位于键盘上方的屏幕上。这一切都很好。LinearLayout
view.VISIBLE
InputMethodManager
EditText
LinearLayout
当我关闭软输入时出现问题。在同一个回调中,我将LinearLayout
(使用EditText
)的可见性设置为View.GONE
,而我看到的是 FrameLayout 卡在屏幕顶部(它不会向下移动)。如果我不 GONE-ize LinearLayout
,两个视图都可以向下移动。
我可以通过在将可见性设置为 之前启动计时器等待来解决此问题GONE
,但我不应该这样做;应该有一些我可以持续收到的通知,表明我什么时候可以隐藏LinearLayout
.
我尝试过的事情:hideSoftInputFromWindow
使用ResultReceiver
(结果接收器回调立即被很好地调用(即在键盘实际消失之前),视图 GONEd 太快,同样的问题),覆盖 onLayout LinearLayout
(当软输入时不会被调用上下移动视图),覆盖其他View
“开”。
另一个真正令人讨厌的事情是这个问题似乎是我的手机独有的 - 运行 Android 4.0.4 的 AT&T 三星 Galaxy SII Skyrocket(可能带有一些三星修改)。我无法在 4.0.3 模拟器上进行复制,其他任何人也无法在具有其他 Android 版本的其他设备上进行复制。
有任何想法吗?