我的布局中有一个WebView和一些按钮。我的WebView中有一个大标签。这个应用程序用于编辑文本文件。这些按钮用于影响WebView中的textarea。当用户按下一个按钮(例如箭头按钮来移动文本视图)时,它将关闭键盘。我使用了toggleSoftInput,但只是切换键盘来显示或不显示。我想让这些按钮在按下按钮时停止隐藏软键盘。我没有发现任何关于我的具体问题。我已经搜索了几个星期。任何人有任何想法,我怎么能阻止我的按钮隐藏Android软键盘?防止按键隐藏Android上的软键盘
7
A
回答
4
问题的解决方案可能是始终显示键盘并让用户在完成操作后关闭它。
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
请在您的活动的onCreate()方法中尝试此代码。 请注意,如果用户按下键盘上的关闭按钮或后退按钮,它应关闭它。我想你不应该干涉这种情况。 当动作完成后,您可以从代码关闭键盘。
4
我在同一条船上,所以如果你找到理想的解决方案,我很乐意听到它。编辑: 成功!无论如何,或者比以前好得多。我删除了我的旧解决方案,因为这个更好。
如https://stackoverflow.com/a/10536033/513038所述,事实证明loadData()隐藏了键盘。 但是,我发现在WebView的hideSoftKeyboard()中,它通过imm.isActive(mWebView)检查InputMethodManager以查看webview是否处于活动状态。因此,如果您在loadData()之前将焦点切换到EditText,并且立即切换回WebView,则键盘仍然存在!它简单地切换为大写,我认为将焦点返回到webview(实际上,这似乎并不总是会发生;这取决于),但它远不如键盘闪烁而回。
需要发生的要点如下。
扩展WebView。给它一个EditText字段:
public EditText mFocusDistraction;
在构造函数中,有下面几行:
mFocusDistraction = new EditText(context);
addView(mFocusDistraction);
然后覆盖使用loadURL():
public void loadUrl(String s) {
mFocusDistraction.requestFocus();
super.loadUrl(s);
this.requestFocus();
}
这应该得到它的工作,基本上是这样。这是一个有点马车,不过,这里有一个更加完整的类:
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;
import android.widget.EditText;
public class WebViewMod extends WebView {
public EditText mFocusDistraction;
public Context mContext;
public WebViewMod(Context context) {
super(context);
init(context);
}
public WebViewMod(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public WebViewMod(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
public WebViewMod(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) {
super(context, attrs, defStyle, privateBrowsing);
init(context);
}
public void init(Context context) {
// This lets the layout editor display the view.
if (isInEditMode()) return;
mContext = context;
mFocusDistraction = new EditText(context);
mFocusDistraction.setBackgroundResource(android.R.color.transparent);
this.addView(mFocusDistraction);
mFocusDistraction.getLayoutParams().width = 1;
mFocusDistraction.getLayoutParams().height = 1;
}
@Override
public void loadUrl(final String url) {
if (mContext instanceof Activity && this.isFocused()) {
((Activity)mContext).runOnUiThread(new Runnable() {
@Override
public void run() {
mFocusDistraction.requestFocus();
WebViewMod.super.loadUrl(url);
WebViewMod.this.requestFocus();
}
});
} else {
super.loadUrl(url);
}
}
}
0
Xamarin的Android(备选):
InputMethodManager inputManager = (InputMethodManager)GetSystemService(Context.InputMethodService);
inputManager.ToggleSoftInput (ShowFlags.Forced, HideSoftInputFlags.ImplicitOnly);
相关问题
- 1. 隐藏软键盘
- 2. Android:在按钮上隐藏键盘按
- 3. 在Android中完成键盘上隐藏软键盘?
- 4. 软键盘隐藏的EditText
- 5. 隐藏Android键盘按键预览
- 6. 隐藏返回键上的软键盘按
- 7. 如何防止键盘被隐藏?
- 8. 如何隐藏软键盘?
- 9. 如何隐藏EditText上的软键盘
- 10. 如何在WindowsPhone/Windows 8.1上按Enter键时隐藏软键盘?
- 11. Android:触摸EditText时隐藏软键盘
- 12. 在新页面上隐藏软键盘
- 13. 阻止隐藏视图的键盘android
- 14. 的Flex防止软键盘从收盘
- 15. 如何在软键盘显示时隐藏EditText软键盘?
- 16. Android的webview。键盘隐藏
- 17. “隐藏键盘按钮”的键码
- 18. 隐藏android键盘按下输入
- 19. IPad键盘“隐藏按钮”
- 20. 如何防止Android键盘隐藏编辑文本?
- 21. 隐藏iPhone上的键盘
- 22. 按HOME键键盘不能隐藏
- 23. Android键盘隐藏LinerLayout
- 24. 在android中隐藏键盘?
- 25. 隐藏MonoDroid中的软键盘
- 26. 检测隐藏的软键盘
- 27. 无法隐藏EditTextPreference的软键盘
- 28. 如何隐藏WP7中的软键盘?
- 29. 显示/隐藏Cordova的软键盘
- 30. 隐藏键盘
这是从先前选择的输入/文本字段失去焦点的问题。 1)选择输入用于输入 2)loadUrl被称为 3)键盘仍然打开,但键入它什么都不做(你不再输入相同的输入 –
@HaykSaakian真的吗?我不知道;我对我有用,而且我不会在我把它放在这里时犯错。我假设你正在尝试输入与运行loadUrl相同的webview,对吧? – Erhannis
也许这只是一小段时间窗口,在你的情况下,你没有注意到它?在我的情况下,我有一个页面,我每秒多次调用loadUrl(聊天页面使用java websockets,使用loadUrl使用javascript注入消息) –