键盘出现时,片段布局与状态栏重叠

时间:2015-09-29 11:36:45

标签: android material-design toolbar overlapping

我有一个用户输入的片段,当键盘出现时,我的片段屏幕甚至在状态栏和工具栏上方移动。

没有键盘 - https://www.dropbox.com/s/51gygn8z768bkp0/Screenshot_2015-10-01-15-26-37.png?dl=0

使用Keyboad - https://www.dropbox.com/s/z88pegbn7a0qoht/Screenshot_2015-10-01-15-26-44.png?dl=0

此问题的屏幕截图可以在上面的共享图片网址中看到。 我正在尝试将半透明屏幕用于应用程序。

我的活动布局是 -

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!--<LinearLayout
        android:id="@+id/container_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">-->

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />
    <!-- </LinearLayout>-->

    <FrameLayout
        android:id="@+id/container_body"
        android:layout_width="fill_parent"
        android:layout_height="match_parent" />


</LinearLayout>


<fragment
    android:id="@+id/fragment_navigation_drawer"
    android:name="com.pace.automate.fragment.FragmentDrawer"
    android:layout_width="@dimen/nav_drawer_width"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:layout="@layout/fragment_navigation_drawer"
    tools:layout="@layout/fragment_navigation_drawer" />

我正在使用的主题是

<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:typeface">monospace</item>

    </style>

和工具栏就像 -

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:fitsSystemWindows="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

具有属性fitsSystemWindows = true。 但是布局正在向上移动,即使我已经尝试将片段布局放在滚动视图中并在此活动的清单中设置android:windowSoftInputMode =“adjustPan”。但是当键盘出现时仍然屏幕显示它向上推。 我的片段布局就像

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:customAttrs="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">



     <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            >
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:layout_marginRight="8dp">


                <com.pace.automate.Utils.CustomFonts
                    android:id="@+id/title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="16dp"
                    android:text="Please fill the Details"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#898989"
                    customAttrs:customFont="regular" />

                <EditText
                    android:id="@+id/amount"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/title"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="12dp"
                    android:background="@android:color/transparent"
                    android:drawableBottom="@drawable/log_entry_keyline"
                    android:drawableLeft="@drawable/log_entry_icn_amount"
                    android:drawablePadding="7dp"
                    android:ems="10"
                    android:hint="Amount"
                    android:inputType="numberDecimal"
                    android:padding="4dp">

                    <requestFocus />
                </EditText>

                <EditText
                    android:id="@+id/odometer"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/amount"
                    android:layout_marginTop="12dp"
                    android:background="@android:color/transparent"
                    android:drawableBottom="@drawable/log_entry_keyline"
                    android:drawableLeft="@drawable/log_entry_icn_odometer"
                    android:drawablePadding="7dp"
                    android:ems="10"
                    android:hint="Odometer Reading"
                    android:inputType="number"
                    android:padding="4dp">


                </EditText>

                <EditText
                    android:id="@+id/liters"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/odometer"
                    android:layout_marginTop="12dp"
                    android:background="@android:color/transparent"
                    android:drawableBottom="@drawable/log_entry_keyline"
                    android:drawableLeft="@drawable/measurement_volume_icon"
                    android:drawablePadding="7dp"
                    android:ems="10"
                    android:hint="Liters"
                    android:inputType="numberDecimal"
                    android:padding="4dp" />

                <TextView
                    android:id="@+id/calendar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/liters"
                    android:layout_marginTop="12dp"
                    android:drawableBottom="@drawable/log_entry_keyline"
                    android:drawableLeft="@drawable/log_entry_icn_calendar"
                    android:drawablePadding="7dp"
                    android:ems="10"
                    android:hint="Date"
                    android:inputType="date"
                    android:padding="4dp"
                    android:textSize="16dp" />

                <CheckBox
                    android:id="@+id/fulltank"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/calendar"
                    android:layout_marginLeft="35dp"
                    android:layout_marginTop="20dp"
                    android:button="@drawable/custom_chekbox_fuel_enter"
                    android:paddingLeft="4dp"
                    android:text="Full Tank" />

                <CheckBox
                    android:id="@+id/partialtank"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignBaseline="@+id/fulltank"
                    android:layout_alignBottom="@+id/fulltank"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="35dp"
                    android:button="@drawable/custom_chekbox_fuel_enter"
                    android:checked="true"
                    android:paddingLeft="4dp"
                    android:text="Partial Tank" />

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/partialtank"
                    android:layout_marginTop="12dp">

                    <com.pace.automate.Utils.CustomAutoComplete
                        android:id="@+id/tag_station"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_toLeftOf="@+id/pb_loading_indicator"
                        android:background="@android:color/transparent"
                        android:drawableBottom="@drawable/log_entry_keyline"
                        android:drawableLeft="@drawable/log_entry_icn_tag_station"
                        android:drawablePadding="7dp"
                        android:ems="10"
                        android:hint="Tag your Fuel station"
                        android:padding="4dp" />

                    <ProgressBar
                        android:id="@+id/pb_loading_indicator"
                        style="?android:attr/progressBarStyleSmall"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:layout_gravity="center_vertical|right"
                        android:layout_marginRight="2dp"
                        android:visibility="gone" />
                </RelativeLayout>


            </RelativeLayout>
        </ScrollView>

        <Button
            android:id="@+id/saveFuelLogs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginTop="12dp"
            android:background="#4cc1bb"
            android:text="Save"
            android:textColor="#fff"
            android:textSize="@dimen/button_text_size" />

    </RelativeLayout>

请帮助我,这似乎是我在这里做的非常基本的错误,但无法将其缩短。

Toolbar overlapping below status bar

Fragment overlaps my AppCompat toolbar

尝试了类似的上述建议,但仍未找到解决方案。

还显示了此活动的android:windowSoftInputMode =“adjustPan”。

2 个答案:

答案 0 :(得分:0)

如果您的应用程序高于21 api级别,您可以使用以下代码,但您必须首先检测键盘是否显示。

hideStatusBar(true); 隐藏或 hideStatusBar(false); 显示

public static void hideStatusBar(boolean isHide) {
    final View decorView = UnationApplication.getInstance().getActivity().getWindow().getDecorView();

    final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

    if (isHide) {
        int flagsMore = flags | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
        decorView.setSystemUiVisibility(flagsMore);
    } else {
        decorView.setSystemUiVisibility(flags);
    }

    decorView
            .setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {

                @Override
                public void onSystemUiVisibilityChange(int visibility) {
                    if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                        //  decorView.setSystemUiVisibility(flags);
                    }
                }
            });
}

答案 1 :(得分:-2)

尝试删除fitSystemWindows =&#34; true&#34;