Android中键盘和EditText之间的空格

时间:2013-07-13 12:47:40

标签: java android keyboard

软输入模式为"SOFT_INPUT_ADJUST_PAN",当显示键盘时,EditText向上移动以保持可见,但键盘和txt的底部始终粘在一起,如屏幕截图所示,我想在它们之间留出一些空间,有可能吗?

此外,输入模式必须保持为"SOFT_INPUT_ADJUST_PAN"

抱歉,我的英文,谢谢你...

Screenshot:

7 个答案:

答案 0 :(得分:3)

这可以帮到你:

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

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

您不应该使用显式像素值设置layout_widthlayout_heights。相反,请视情况使用wrap_parentfill_parent

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

修改

将活动上的android:windowSoftInputMode设置为"adjustPan"

setOnTouchListener()的{​​{1}}中的主要活动中添加此代码:

EditText

答案 1 :(得分:3)

你为什么不尝试这个?

android:windowSoftInputMode="adjustResize"

我知道你想调整平底锅,但这也可以解决你的问题。

由于你真的想继续使用adjustPan,也许你可以尝试重新设计一下XML布局。

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

答案 2 :(得分:3)

我申请了以上对我有用的方法 将Activity上的android:windowSoftInputMode设置为“adjustPan” 我用重力底部将填充添加到edittext 它就像魅力一样。 谢谢,

答案 3 :(得分:1)

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

答案 4 :(得分:1)

在编辑文本中使用简单的填充无效。

将drawable与以下编辑文本一起使用:

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

在清单文件中。

答案 5 :(得分:0)

尝试使用use GlobalLayoutListener:

private var 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
        }
    })

答案 6 :(得分:0)

如果您需要在键盘EditText之间保持一段距离,只需在EditText上添加填充底部即可轻松实现:

 <EditText
     android:id="@+id/your_edit_text"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:paddingBottom="10dp"/>