0

我面临一个我无法解决的问题。这相当简单。

我有一个视图,其中我有一个EditText,一个FloatingActionButton和一个BottomNavigationView。当我选择EditText键盘弹出。这是我希望FloatingActionButton漂浮键盘上方BottomNavigationView隐藏在键盘后面的时候。

我试过同时使用android:windowSoftInputModeasadjustResize和 as adjustPan。前者会使FloatingActionButton 保持BottomNavigationView隐藏在键盘后面。后者将推动键盘上方的FloatingActionButton和向上。BottomNavigationView

除此之外,我尝试使用一个简单的自定义 元素,在检测到键盘时将BottomNavigationView其设置为自己的(使用viewTreeObserveraddOnGlobalLayoutListener)。这与 配合使用,但在 kayboard 弹出您可以看到 的位置后会有一点延迟,使其看起来非常“跳跃”。visibilityhiddenadjustResizeBottomNavigationView

我现在的问题是;是否有替代解决方案?

编辑 这是我当前的 xml,它非常简单。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 
    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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:fitsSystemWindows="false">

<EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="Name" />

<android.support.design.widget.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_anchor="@id/navigation"
    android:layout_margin="10dp"
    android:layout_gravity="top|end"
    app:layout_anchorGravity="right"/>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginEnd="0dp"
    android:layout_marginStart="0dp"
    android:background="?android:attr/windowBackground"
    android:layout_gravity="bottom"
    android:elevation="20dp"
    app:menu="@menu/navigation" />

</android.support.design.widget.CoordinatorLayout>
4

2 回答 2

1

我总是用来解决这个问题的一件事。

  1. 将您的视图包裹在您不想使用键盘的 ScrollView 中。
  2. 将视图保留在 Scrollview 之外,当键盘打开时您希望在键盘上浮动。

这听起来不是很好而且很容易:)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/button_next"
        android:background="#0ff"
        >
       // these views will not come up.
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            >

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="250dp"
                android:hint="Hint"
                />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ABC"
                android:textSize="50sp"
                />
        </LinearLayout>
    </ScrollView>
    // this will float on keyboard
    <Button
        android:id="@+id/button_next"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_alignParentBottom="true"
        android:layout_margin="10dp"
        android:text="Button Next"
        />

</RelativeLayout>

在 manifest.xml

<application
        ...
        >
        <activity android:name=".YourActivity"
            android:windowSoftInputMode="adjustResize"
           >
        </activity>
</application>

编辑:

试试这个,它是用来在键盘上移动晶圆厂的。

添加android:windowSoftInputMode="adjustResize"到清单中的活动确保布局 xml 中的根视图具有android:fitsSystemWindows="true"属性

于 2018-04-16T13:31:12.787 回答
0

将您的主要父布局属性更改android:fitsSystemWindows="false"android:fitsSystemWindows="true"并将android:windowSoftInputMode="adjustResize"您的活动放入AndroidManifest.xml文件中

于 2018-04-17T04:54:59.587 回答