Макет фрагмента перекрывает строку состояния при появлении клавиатуры

У меня есть фрагмент для пользовательского ввода, когда появляется клавиатура, мой экран фрагмента смещается даже над строкой состояния и панелью инструментов.

Без клавиатуры - https://www.dropbox.com/s/51gygn8z768bkp0/Screenshot_2015-10-01-15-26-37.png?dl=0

С помощью клавиатуры - https://www.dropbox.com/s/z88pegbn7a0qoht/Screenshot_2015-10-01-15-26-44.png?dl=0

снимок экрана с этой проблемой можно увидеть в приведенных выше URL-адресах изображений. Я пытаюсь использовать полупрозрачный экран для приложения.

Схема моей деятельности -

<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>

пожалуйста, помогите мне в этом, это кажется очень простой ошибкой, которую я здесь делаю, но не могу ее исправить.

Панель инструментов перекрывается под строкой состояния

Фрагмент перекрывает мою панель инструментов AppCompat

попробовал подобное предложение, но все еще не нашел решения.

также в манифесте есть android: windowSoftInputMode = "adjustPan" для этого действия.


person Anshul Kabra    schedule 29.09.2015    source источник
comment
установите android: windowSoftInputMode = adjustPan | stateUnchanged в свой файл манифеста   -  person Ganesh Gudghe    schedule 29.09.2015
comment
при этом ничего не изменилось. Панель инструментов все еще перекрывает экран   -  person Anshul Kabra    schedule 30.09.2015
comment
пожалуйста, установите его на свою основную деятельность   -  person Ganesh Gudghe    schedule 30.09.2015
comment
да, я сделал это для mainactivity только в манифесте.   -  person Anshul Kabra    schedule 01.10.2015


Ответы (2)


arrow_upward
0
arrow_downward

Если ваше приложение выше 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);
                    }
                }
            });
}
person KumailR    schedule 28.12.2015

arrow_upward
-1
arrow_downward

Попробуйте удалить fitSystemWindows = "true"

person user2453055    schedule 01.03.2016