为啥Android不会暂停视图完全被软键盘挡住的片段?

Posted

技术标签:

【中文标题】为啥Android不会暂停视图完全被软键盘挡住的片段?【英文标题】:Why Android does not pause a fragment whose view is completely blocked by the soft keyboard?为什么Android不会暂停视图完全被软键盘挡住的片段? 【发布时间】:2016-12-26 19:49:56 【问题描述】:

首先,我对我的活动的android:windowSoftInputMode="adjustNothing" 设置感到满意。当键盘启动时,我不希望屏幕底部提供任何内容。相反,我想“暂停”(或调用 onPause() 方法)完全被软键盘阻止的片段,然后在它们离开他们的视野时恢复它们。

至少我预计这些片段会自行完成。但从docs 看来,他们的 onPause() 通常链接到其父 Activity 的 onPause()。

从此处和其他地方的其他相关问题的答案中,我了解到目前还没有简单的方法可以获取软键盘的状态。而且,即使不择手段地这样做,我也不想在每个可疑片段上手动调用 onPause() 和 onResume()。

所以,我的实际问题是:当任何片段的视图被软键盘挡住时,是否可以让片段自我感知?如果是,怎么做?

是的,我想了解 Android 是否有充分的理由不对视图完全被阻止的片段调用 onPause(),这与对 Activity 的 onPause() 不同。我知道即使在软键盘的情况下活动也不会这样做。但是,我认为,被软键盘之类的任何东西(有意或无意地)完全阻挡应该会对活动视图的生命周期产生一些影响。

我希望它没有被标记为重复,因为我不是要求知道活动中软键盘的状态,至少直接:)

【问题讨论】:

"当它的视图被软键盘挡住时,是否可以让任何片段自我感知?" -- 不是我知道的。 【参考方案1】:

因为键盘既不是活动也不是主屏幕。推出通知栏时也会出现同样的效果

【讨论】:

很高兴知道。但没有回答为什么会这样设计,以及如何实现我想要实现的目标。

以上是关于为啥Android不会暂停视图完全被软键盘挡住的片段?的主要内容,如果未能解决你的问题,请参考以下文章

EditText底部边框被软键盘挡住的问题

JS 解决安卓手机输入框被软键盘遮住的问题

JS 解决安卓手机输入框被软键盘遮住的问题

Android 底部按钮被软键盘顶起问题解决

Android EditText被软键盘遮挡问题(问题记录)

Android WebView加载页面的输入框被软键盘遮挡的问题