软输入模式是
"SOFT_INPUT_ADJUST_PAN"
,当键盘显示时,EditText
向上移动以保持可见,但键盘和txt底部总是粘在一起,如屏幕截图所示,我想要它们之间有一些空间,可以吗?
输入模式也必须保持为
"SOFT_INPUT_ADJUST_PAN"
。
抱歉我的英语不好,提前谢谢...
我应用了上述对我有用的方法是 将 Activity 上的 android:windowSoftInputMode 设置为“adjustPan” 比我用重力底部将填充添加到编辑文本中 它就像魅力一样起作用。 谢谢,
愿这对您有帮助:
如果您的代码中写入了此行,请将其删除:
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);
你为什么不试试这个呢?
android:windowSoftInputMode="adjustResize"
我知道您想调整平移,但这也可以解决您的问题。
既然你真的想继续使用 adjustmentPan,也许你可以尝试稍微重新设计 XML 布局。
您还必须将所需的填充添加到布局文件中最外层的容器元素。
编辑文本中的简单填充不起作用。
使用可绘制的编辑文本,如下所示:
<?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"
在你的清单文件中。
您可以添加可绘制对象来编辑文本,如下所示:
<?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"
只是想知道,您的应用程序是全屏的吗?有状态栏吗?如果尝试禁用全屏模式并尝试查看是否可以解决您的问题。我记得前段时间有一个关于这个的错误。
尝试使用 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
}
})