如果我创建了一个简单的应用程序,其中有一个活动,其中包含一个EditText,我会这样做
EditText editText = (EditText) findViewById(R.id.editText);
editText.setTextIsSelectable(true);
这样可以防止键盘出现(在我的Android5.0和7.1测试中)。这就是我想要的,正如这些问题所要求的:
源代码是
public void setTextIsSelectable(boolean selectable) {
if (!selectable && mEditor == null) return; // false is default value with no edit data
createEditorIfNeeded();
if (mEditor.mTextIsSelectable == selectable) return;
mEditor.mTextIsSelectable = selectable;
setFocusableInTouchMode(selectable);
setFocusable(selectable);
setClickable(selectable);
setLongClickable(selectable);
// mInputType should already be EditorInfo.TYPE_NULL and mInput should be null
setMovementMethod(selectable ? ArrowKeyMovementMethod.getInstance() : null);
setText(mText, selectable ? BufferType.SPANNABLE : BufferType.NORMAL);
// Called by setText above, but safer in case of future code changes
mEditor.prepareCursorControllers();
}
但是我看不出这会禁用输入法。
无论我是否设置了setTextIsSelectable
,调用以下方法都会返回true
。
editText.isFocusable(); // true
editText.isFocusableInTouchMode(); // true
editText.isClickable(); // true
editText.isLongClickable(); // true
我这么问部分是因为好奇,但也因为我需要禁用html" target="_blank">应用程序中的系统键盘。我想了解发生了什么,这样我就可以确定它真的在做我认为它在做的事情。
使现代化
跟进问题和答案:
调用TextView时,键盘不会显示。setTextIsSelectable(true)
然后选择文本作为编辑器的结果。启动SelectActionModeInternal
,检查是否TextView。ISTEXTSELECTIVATE
在显示文本选择ActionMode
之前为false
。
final boolean selectionStarted = mTextActionMode != null;
if (selectionStarted && !mTextView.isTextSelectable() && mShowSoftInputOnFocus) {
// Show the IME to be able to replace text, except when selecting non editable text.
final InputMethodManager imm = InputMethodManager.peekInstance();
if (imm != null) {
imm.showSoftInput(mTextView, 0, null);
}
}
我猜测,为什么会以这种方式实现它,可能是因为框架团队决定,他们希望文本编辑器
可以预测,由于键盘的移动,可以选择不在屏幕上跳转。这可能只是一个用户界面的决定。据git称,自2012年以来就一直如此,但提交中没有提到任何与该实现相关的具体内容。
我正在使用自定义的应用程序内键盘,因此需要禁用系统键盘。我可以用它来做 对于Android API 21。但要在API 11上做同样的事情,我正在做 有时我想在用禁用系统键盘后再次显示它。但我不知道怎么做。执行以下操作确实会显示系统键盘,但如果用户隐藏键盘,然后再次单击编辑文本,键盘仍然不会显示。 我想我可以做,然后手动显示或隐藏系统键盘,但我更愿意撤消做的任何事情。以下也不起作用: 我该怎么做呢
我的第一个标签上有一条编辑文本。当然,当我触摸编辑文本时会出现软键盘。但当我访问第二个选项卡时,这意味着第二个选项卡活动,软键盘始终出现在我的第一个选项卡上,并且不会消失,即使我的第二个选项卡活动上没有EditText。 我想防止软键盘出现,当我访问我的第二个选项卡。 我如何解决这些问题? 这是我的清单文件
我正在制作一个计算器来学习写作,所以我把自己的数字按钮放在屏幕上,我想防止软键盘出现。 这是我的repo:https://github.com/vitor-ramos/CalculadorCompose 我在TextFieldImpl中注意到。kt有一个显示键盘的修改器,所以我试图克隆代码并删除这行:我知道这样复制代码不是个好主意,但我想尝试一下,结果失败了。正如您在下面的原始代码中看到的,有一个
我正在使用蓝牙条形码扫描器,就像蓝牙键盘一样,当我的用户扫描某些东西时,我想处理这些键,但我知道他可以聚焦活动中的任何编辑文本,所以我想检测他在我的KeyEvent中使用的键盘,如下所示:
问题内容: 在IE上,我可以使用(非常不标准,但可以正常工作)的jQuery做到这一点 但是,是否可以以在Firefox上运行的方式或以跨浏览器的方式获得奖励呢? 作为记录: 什么也没做。 解决了问题,但使退格键在页面上不可用,这甚至比原始行为还差。 编辑:我这样做的原因是我不是在创建一个简单的网页而是一个大型应用程序。仅仅因为您在错误的位置按了退格键,就失去了10分钟的工作,这真是令人讨厌。通过
问题内容: 我正在用python为Ubuntu Linux编写一个防RSI /类型中断程序。我希望能够“锁定键盘”,以便忽略所有按键,直到“解锁”为止。我希望能够强迫用户休息一下。 我想以某种编程方式“立即”关闭键盘,直到我的程序稍后释放它(可能是0.1秒→10秒后)。当我“关闭键盘”时,不应将任何按键发送给任何窗口,窗口管理器等。最好,屏幕仍应显示相同的内容。即使此程序不在前字体且没有焦点,也应