当软键盘出现并且软键盘在编辑文本下方时,在布局中保持工具栏位置固定

Posted

技术标签:

【中文标题】当软键盘出现并且软键盘在编辑文本下方时,在布局中保持工具栏位置固定【英文标题】:keep Toolbar position fix in layout when soft keyboard comes and soft keyboard below edit text 【发布时间】:2016-11-28 18:51:03 【问题描述】:

这是我的简单看法:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main3"
    android:orientation="vertical"
    android:layout_
    android:layout_
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.utkarsh.test.Main3Activity">

    <EditText
        android:layout_marginTop="180dip"
        android:layout_
        android:layout_

        android:hint="edit text1" />

    <EditText
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        android:hint="edit text2" />

    <EditText
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        android:hint="edit text3" />

    <EditText
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        android:hint="edit text4" />


</LinearLayout>

我想要两个条件: 1]一旦我开始输入我的编辑文本,键盘就应该在那个特定的编辑文本下方 2]标题栏应保持固定在该位置。

我在 manifest 中使用 android:windowSoftInputMode="adjustPan" 来实现拳头条件,但同时没有达到 2 条件。 其次使用 android:windowSoftInputMode="adjustResize" 达到 2 条件但 1 未达到。 同时使用 android:windowSoftInputMode="adjustResize|adjustPan" 和调整调整大小一样。我已经尝试了所有答案,例如 android:windowSoftInputMode="adjustNothing" 但没有任何帮助

我怎样才能同时满足这两个条件??

【问题讨论】:

协调器布局可以做点什么吗? 【参考方案1】:

如果我理解你,请尝试使用ScrollView。示例:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="pl.com.qubuss.test.RegisterActivity">
<RelativeLayout
    android:layout_
    android:layout_>
<EditText
    android:layout_
    android:layout_
    android:id="@+id/nameET"
    android:layout_marginTop="20dp"
    android:inputType="textPersonName"
    android:hint="@string/nameTextHint"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android: />

<EditText
    android:layout_
    android:layout_
    android:id="@+id/surnameET"
    android:layout_below="@+id/nameET"
    android:layout_alignLeft="@+id/nameET"
    android:layout_alignStart="@+id/nameET"
    android:layout_marginTop="20dp"
    android:
    android:hint="@string/surnameTextHint" />

<EditText
    android:layout_
    android:layout_
    android:inputType="textEmailAddress"
    android:ems="10"
    android:id="@+id/emailET"
    android:hint="@string/emailTextHint"
    android:
    android:layout_below="@+id/surnameET"
    android:layout_alignLeft="@+id/surnameET"
    android:layout_alignStart="@+id/surnameET"
    android:layout_marginTop="20dp" />

<EditText
    android:layout_
    android:layout_
    android:id="@+id/username_registerET"
    android:layout_below="@+id/emailET"
    android:layout_alignLeft="@+id/emailET"
    android:layout_alignStart="@+id/emailET"
    android:layout_marginTop="20dp"
    android:
    android:hint="@string/usernameTextHint" />

<EditText
    android:layout_
    android:layout_
    android:inputType="textPassword"
    android:ems="10"
    android:id="@+id/password_registerET"
    android:layout_below="@+id/username_registerET"
    android:layout_alignLeft="@+id/username_registerET"
    android:layout_alignStart="@+id/username_registerET"
    android:layout_marginTop="20dp"
    android:hint="@string/passwordTextHint" />

<Button
    android:layout_
    android:layout_
    android:text="@string/registerButton"
    android:id="@+id/registerButton"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="23dp"
    android:layout_below="@+id/conPasswor_registerET"/>

<EditText
    android:layout_
    android:layout_
    android:inputType="textPassword"
    android:ems="10"
    android:id="@+id/conPasswor_registerET"
    android:layout_marginTop="20dp"
    android:layout_below="@+id/password_registerET"
    android:layout_alignLeft="@+id/password_registerET"
    android:layout_alignStart="@+id/password_registerET"
    android:hint="@string/conPasswordTextHint" />
</RelativeLayout>
</ScrollView>

【讨论】:

以上是关于当软键盘出现并且软键盘在编辑文本下方时,在布局中保持工具栏位置固定的主要内容,如果未能解决你的问题,请参考以下文章

当软键盘可见时,无法单击按钮

ios软键盘弹出再收起,页面布局错乱问题解决

显示软键盘时向上移动布局?

软输入键盘隐藏编辑文本

android软键盘挡住了下面的按钮,有啥办法解决么

出现软键盘时如何避免只有BottomNavbar向上推