Android 中键盘和 EditText 之间的空格

问题描述 投票:0回答:7

软输入模式是

"SOFT_INPUT_ADJUST_PAN"
,当键盘显示时,
EditText
向上移动以保持可见,但键盘和txt底部总是粘在一起,如屏幕截图所示,我想要它们之间有一些空间,可以吗?

输入模式也必须保持为

"SOFT_INPUT_ADJUST_PAN"

抱歉我的英语不好,提前谢谢...

Screenshot:

java android keyboard
7个回答
5
投票

我应用了上述对我有用的方法是 将 Activity 上的 android:windowSoftInputMode 设置为“adjustPan” 比我用重力底部将填充添加到编辑文本中 它就像魅力一样起作用。 谢谢,


4
投票

愿这对您有帮助:

如果您的代码中写入了此行,请将其删除:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

或:

您不应使用显式像素值设置

layout_width
layout_heights
。相反,请根据需要使用
wrap_parent
fill_parent

或:

如果您已将

minSdkVersion
设置为
3
,请将其更改为
minSdkVersion=4

编辑:

将 Activity 上的 android:windowSoftInputMode 设置为

"adjustPan"

或:

将此代码添加到您的

setOnTouchListener()
EditText
的主要活动中:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_UNSPECIFIED);

0
投票

你为什么不试试这个呢?

android:windowSoftInputMode="adjustResize"

我知道您想调整平移,但这也可以解决您的问题。

既然你真的想继续使用 adjustmentPan,也许你可以尝试稍微重新设计 XML 布局。

您还必须将所需的填充添加到布局文件中最外层的容器元素。


0
投票

编辑文本中的简单填充不起作用。

使用可绘制的编辑文本,如下所示:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="8dp"
        android:left="8dp"
        android:right="8dp"
        android:top="8dp">

        <shape android:shape="rectangle">

            <corners android:radius="10dp" />
            <stroke
                android:width="1dp"
                android:color="@color/white" />
            <solid android:color="@color/transparent" />
        </shape>
    </item>
</layer-list>

然后使用

    android:windowSoftInputMode="adjustPan"

在你的清单文件中。


0
投票

您可以添加可绘制对象来编辑文本,如下所示:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="30dp" />
            <padding
                android:bottom="10dp"
                android:left="10dp"
                android:right="10dp"
                android:top="10dp" />
        </shape>

    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/primary" />
            <corners android:radius="30dp" />
        </shape>

    </item>
</layer-list>

在您的活动或片段中添加以下行:

requireActivity().getWindow()
          .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

并在清单文件中:

android:windowSoftInputMode="adjustResize|adjustPan"

-1
投票

只是想知道,您的应用程序是全屏的吗?有状态栏吗?如果尝试禁用全屏模式并尝试查看是否可以解决您的问题。我记得前段时间有一个关于这个的错误。


-1
投票

尝试使用 GlobalLayoutListener:

私有变量 focusView:View?=null

// Register global layout listener.
    decorView?.viewTreeObserver?.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {

        private val windowVisibleDisplayFrame = Rect()
        private var lastVisibleDecorViewHeight: Int = 0

        override fun onGlobalLayout() {

            // Retrieve visible rectangle inside window.
            decorView.getWindowVisibleDisplayFrame(windowVisibleDisplayFrame)
            val visibleDecorViewHeight = windowVisibleDisplayFrame.height()

            // Decide whether keyboard is visible from changing decor view height.
            if (lastVisibleDecorViewHeight != 0) {
                if (lastVisibleDecorViewHeight > visibleDecorViewHeight + MIN_KEYBOARD_HEIGHT_PX) {
                    // Calculate current keyboard height (this includes also navigation bar height when in fullscreen mode).
                    val currentKeyboardHeight = decorView.height - windowVisibleDisplayFrame.bottom

        //keyboardHeight = currentKeyboardHeight


          focusView =  activity?.currentFocus     
          focusView.setPadding(0, 0, 0, SET_BOTTOM_PADDING_SPACE)  // <---set space here



                } else if (lastVisibleDecorViewHeight + MIN_KEYBOARD_HEIGHT_PX < visibleDecorViewHeight) {

                    focusView.setPadding(0, 0, 0, 0)

                }
            }
            // Save current decor view height for the next call.
            lastVisibleDecorViewHeight = visibleDecorViewHeight
        }
    })
© www.soinside.com 2019 - 2024. All rights reserved.