我尝试创建一个活动,其中一个RelativeLayout
用作片段容器,其中每个片段都有一个单独的背景颜色,在半透明的状态栏下流血,以及整个活动的位置考虑键盘大小。
活动的布局是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
片段包裹着:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true" />
活动定义为:
<activity android:screenOrientation="portrait"
android:name=".login.LoginActivity"
android:windowSoftInputMode="adjustResize" />
第一个片段的一切正常。活动调整RelativeLayout
的大小,其中包含的片段调整大小以调整键盘,一切都很好。但是,当将一个片段替换为在<requestFocus />
上使用<EditText />
的另一个片段时,键盘会保持向上但推入的第二个片段占据整个屏幕大小(在键盘下)。关闭并重新打开键盘会导致活动重新测量,然后一切都很好。类似地,如果键盘在片段转换期间改变高度(当从不支持自动校正的字段移动到那个,那么键盘变高),片段正确测量。因此,当键盘大小不变的两个片段之间进行转换时,它似乎只是一个问题。
将fitsSytemWindows=true
添加到包装RelativeLayout
可以解决问题,但也会阻止片段视图显示在状态栏下,这不是我想要的。是否有某种方法可以强制片段重新测量或者我失踪的东西?这是使用本机片段,而不是app-compat。