Scrollview视口位于焦点EditText

时间:2018-06-30 17:51:00

标签: android scrollview statusbar

在活动内(使用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。

0 个答案:

没有答案