android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。

下面我们只讨论adjust,即Activity主窗口所做的调整。state很好理解,控制软键盘是否显示,贴一下Android开发者指南的文档。

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第1张图片

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第2张图片

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第3张图片

一些概念:

Activity主窗口尺寸

软键盘空间

遮盖:这里焦点的遮盖依据的是Y轴

窗口内容是否存在可滚动的布局视图

展示的内容:

adjust的取值:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第4张图片

所用的布局展示:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第5张图片

无软键盘时的页面:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第6张图片

 6个编辑框,点击输入时其焦点所在的位置不同。


滚动布局时

adjustNothing:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第7张图片

 点击EditText5,此时焦点在软键盘的下方(焦点被覆盖),可以看到软件盘直接覆盖在了activity页面上,activity无任何改动。

adjustResize:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第8张图片

点击输入框1时,可以看到软件盘弹出,将activity页面的内容覆盖了。如果焦点在输入法框下面呢?

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第9张图片

这里点击的是EditText5,可以看到软键盘还是将布局覆盖了,但是activity的布局还是在的,可以看到EditText5的焦点位置。

adjustPan:

当窗口模式为adjustPan时,点击EditText1:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第10张图片

点击EditText3:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第11张图片

 可以看到Activity的布局向上移动了。

点击EditText5:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第12张图片

可以看到将Finish按钮被顶出了可见范围。确实是将布局整体的平移(向上)。

adjustUnspecified:

当焦点不会被软件盘遮挡是(不会有变动)同无滑动时的adjustPan:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第13张图片

点击EditText会被遮挡:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第14张图片

/***********************************手动分割线*****************************************/


有滚动布局时:

adjustNothing:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第15张图片

 依然没有变化。

adjustResize:

android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第16张图片

 当设置的可滚动时,被压缩内容的展示区被压缩了,里面可以滑动。没有出现焦点(在滑动布局内)被覆盖的情况。

adjustPan:

 android:windowSoftInputMode。 Activity 的主窗口与包含屏幕软键盘的窗口之间的交互方式。adjust相关演示。_第17张图片

 依然会是Activity布局平移。

adjustUnspecified:效果同有滑动的adjustResize。

最后:

(这里我们给最外层布局添加了背景,adjustResize软键盘展示的背景不是这个颜色)当软键盘非透明未占满时,会有与布局背景(如果有)不一样显示,非常突兀。我懵了,这几个概念(Activity主窗口布局、软键盘所在的布局、Actvity页面布局)是啥关系,等我去弄懂了再来补充。有懂哥帮忙解惑吗?比如,如何让adjustPan模式下的软键盘有同activity布局一样的背景。

你可能感兴趣的:(android)