36

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

输入模式也必须保持为"SOFT_INPUT_ADJUST_PAN".

对不起,我的英语,在此先感谢...

截屏:

4

6 回答 6

4

愿这对您有所帮助:

如果此行是在您的代码中编写的,则将其删除:

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

或者:

你不应该用明确的像素值设置你的layout_width和。layout_heights相反,请酌情使用wrap_parentfill_parent

或者:

如果您已将其设置minSdkVersion为,3则将其更改为minSdkVersion=4

编辑:

将Activity 上的android:windowSoftInputMode设置为"adjustPan"

或者:

将此代码添加到您的主要活动setOnTouchListener()EditText

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_UNSPECIFIED);
于 2013-07-13T12:56:21.967 回答
4

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

于 2014-08-20T08:26:18.893 回答
2

你为什么不试试这个?

android:windowSoftInputMode="adjustResize"

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

既然您真的想继续使用adjustPan,也许您可​​以尝试重新设计一下XML 布局。

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

于 2013-07-21T20:28:54.723 回答
1

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

将可绘制与您的编辑文本一起使用,如下所示:

<?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"

在您的清单文件中。

于 2019-08-01T07:07:54.713 回答
0

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

于 2013-07-22T18:20:47.543 回答
0

尝试使用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
        }
    })
于 2018-11-21T14:34:29.903 回答