修复键盘打开时父级 Activity 中的按钮位置

Fix Button position in Parent Activity when keyboard is open

我们在 Activity.Activity 中使用 Fragment 包含提交按钮,Fragment 包含表单输入。

现在,当我们打开键盘时,activity 按钮会自动出现在 keyboard.How 上方,我们能否粘住该按钮并向上移动片段部分。

我们只想把那个更新按钮贴在最后。

你必须试试这个代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    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=".SplashActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true"/>

</RelativeLayout>

我添加了这段代码,它对我有用。此代码将在键盘打开时隐藏按钮并在关闭时再次显示它。

 parentView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    Rect r = new Rect();
                    rootView.getWindowVisibleDisplayFrame(r);
                    int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top);

                    if (heightDiff > 100) { // if more than 100 pixels, its 
                    //Hide Show Key board
                        view_one.setVisibility(View.GONE);
                        view_two.setVisibility(View.GONE);

                    }else{
                    //ok now we know the keyboard is down...
                        view_one.setVisibility(View.VISIBLE);
                        view_two.setVisibility(View.VISIBLE);

                    }
                }
            });

我不知道我是否理解正确,但您尝试将此代码放入您的 manifest 文件中 activity 标签内:

android:windowSoftInputMode="adjustPan"

并将此代码也放入您的按钮标签中:

android:layout_alignParentBottom="true"