gpt4 book ai didi

java - Android 避免键盘以编程方式覆盖编辑文本

转载 作者:太空狗 更新时间:2023-10-29 14:41:43 24 4
gpt4 key购买 nike

我编写了以下通用的、每次都可用的函数来显示和关闭键盘:

|==|以编程方式显示和关闭键盘:

InputMethodManager iptKeybodMgrVar;

void keybodDspFnc(EditText txtEdtVyuVar)
{
txtEdtVyuVar.requestFocus();
if (iptKeybodMgrVar == null)
{
iptKeybodMgrVar = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
}
iptKeybodMgrVar.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
}

void keybodDsmFnc(EditText txtEdtVyuVar)
{
iptKeybodMgrVar.hideSoftInputFromWindow(txtEdtVyuVar.getWindowToken(), 0);
}

但问题是,当编辑文本在键盘下方时, Activity 不会向上移动。它仅在用户开始输入时发生变化。

那么如何让它在键盘出现时立即向上移动呢?

我浏览了下面的所有链接,但没有任何帮助:

Android: How do I prevent the soft keyboard from pushing my view up?

adjustPan not preventing keyboard from covering EditText

Android : Soft Keyboard covering edit text up (adjustresize or adjustpan doesnt work)

https://readyandroid.wordpress.com/android-soft-keyboard-covers-edittext-field-overscroll-to-soft-keyboard/

我试过了,但没有成功:

android:windowSoftInputMode="adjustPan|stateAlwaysHidden" 

android:windowSoftInputMode="adjustResize|stateAlwaysHidden"

android:windowSoftInputMode="adjustResize|adjustPan"

也试过这个代码:

(所以,不重复 :) Move layouts up when soft keyboard is shown?

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

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

//This Code brings up the keyboard at starting of the activity and pushes all Edit Text up. So not useful
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

我可以添加 ScrollView,但它似乎只是解决方法,似乎不是解决方案。

感觉应该有一个编程的解决方案,比如设置一些 InputMethodManager。

最佳答案

您需要将 EditText 包裹在 LinearLayout 中,然后用 ScrollView 包裹它。如果您通过代码进行操作会有点困难,所以我的建议是更改您的 xml 布局。

关于java - Android 避免键盘以编程方式覆盖编辑文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46986843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com