在活动内(使用android:windowSoftInputMode =“ stateHidden | adjustResize”)
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/magenta"
tools:context=".SomeActivity">
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/onboarding" />
<include layout="@layout/view_toolbar"/>
</android.support.constraint.ConstraintLayout>
具有样式
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
一个片段具有滚动视图:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="@color/unwanted_red">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/blue">
<!-- Some TextInputLayout with EditTexts here, not enough to make the
screen scrollable initially -->
</android.support.constraint.ConstraintLayout>
</ScrollView>
当EditText通过按下获得焦点时,由于视口变小(由于出现键盘和fillViewport:true),ScrollView的确可滚动。但是,这也会导致ScrollView下降到状态栏下方,从而在状态栏后面显示父级LinearLayout的不需要的红色背景色,但是更糟糕的是,它会在视觉上将状态下的EditTexts移动到状态栏的高度。
为LinearLayout提供带有状态栏高度的paddingTop可以解决此问题,但我认为这不是很好。任何人都可以与ScrollView结合使用更好的解决方案或更好的布局设置?
使用最低SDK 21开发API 27。