底部导航视图随windowSoftInputMode = adjustResize上升

时间:2019-11-07 12:19:37

标签: java android android-studio bottomnavigationview

我需要windowSoftInputMode = AdjustRezise用于我的布局,以便我的按钮随键盘向上移动。但是我不希望我的BottomNagivationView受到此影响。 我该如何解决?

我的BottomNavigationView来自MainActivity.xml,它是:

<RelativeLayout
    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"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/bottom_navigation"></FrameLayout>

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        app:menu="@menu/bottom_menu"/>


</RelativeLayout>

我的清单具有android:windowSoftInputMode =“ adjustPan”,但是当我使用以下代码打开片段时,我会通过代码对其进行调整:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

下面是一些图片,您可以理解我的意思:https://imgur.com/a/vjePxI6

所以我想知道的是如何设置BottomNavigationView在键盘打开时不执行任何操作,同时我希望按钮受到以下影响: getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

2 个答案:

答案 0 :(得分:0)

就我而言,仅在清单文件中添加以下行即可解决问题。 android:windowSoftInputMode =“ adjustResize | adjustPan”

答案 1 :(得分:0)

在活动代码内添加android:windowSoftInputMode="adjustPan"到清单文件中。 然后转到您的活动并将父布局更改为RelativeLayout,然后创建FrameLayout,将您的片段保存在相对布局(即父布局)中。然后添加第二个布局,即LinearLayout,它保留bottomNavigationView并将其高度和宽度设为match_parent但在FrameLayout之下。 下面是主要活动布局的示例

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:orientation="vertical"
    tools:context=".MainActivity">

//FrameLayout which holds all your fragments
<FrameLayout
    android:id="@+id/fragments_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">



</FrameLayout>


//BottomNavigationView Container
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="bottom"
    android:layout_below="@id/fragments_container">

    //BottomMenus
    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:id="@+id/bottom_navigation"
        android:background="@drawable/rectangle_4_dash"
        android:layout_alignParentBottom="true">

        //Container of Menus
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:weightSum="5">

            //BottomMenu One
            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:gravity="center_vertical">

                <ImageView
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_gravity="center"
                    android:src="@drawable/home_icon" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="Home" />
            </LinearLayout>

             //BottomMenu Two
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center_vertical"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_gravity="center"
                    android:src="@drawable/contact_icon" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="Contact" />
            </LinearLayout>


            //BottomMenu Three
            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:gravity="center_vertical">

                <ImageView
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_gravity="center"
                    android:src="@drawable/about_icon" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="About"
                    android:layout_gravity="center"/>
            </LinearLayout>

             //BottomMenu Four
            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:gravity="center_vertical">

                <ImageView
                    android:layout_width="20dp"
                    android:layout_height="17dp"
                    android:layout_gravity="center"
                    android:src="@drawable/services_icon" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Services"
                    android:layout_gravity="center"/>
            </LinearLayout>

        </LinearLayout>


    </com.google.android.material.bottomnavigation.BottomNavigationView>
</LinearLayout>

然后转到要滚动的片段,然后像下面一样设计它。

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


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


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

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="Title Of Your Form"
                android:textAlignment="center"
                android:textColor="@color/black"
                android:textSize="18sp"
                android:textStyle="bold" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:padding="20dp">

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/f_name"
                    android:inputType="textPersonName"
                    android:padding="10dp"
                    android:textSize="14sp" />

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:hint="@string/m_name"
                    android:inputType="textPersonName"
                    android:padding="10dp"
                    android:textSize="14sp" />

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:hint="@string/l_name"
                    android:inputType="textPersonName"
                    android:padding="10dp"
                    android:textSize="14sp" />


                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:hint="Message"
                    android:inputType="text"
                    android:padding="10dp"
                    android:textSize="14sp" />

            </LinearLayout>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="10dp"
                android:text="Send Messagge"
                android:textAllCaps="false"
                android:textColor="@color/white"
                android:layout_marginBottom="40dp"/>
        </LinearLayout>

</ScrollView>

这就是我解决的方式, 如果您有任何疑问,请让我知道,但是如果它有帮助或看起来像是正确的答案,请将其标记为正确的答案。