【发布时间】:2010-11-26 00:50:45
【问题描述】:
当有人使用我的应用程序时,我想关闭在软/虚拟键盘上显示“建议的单词”(仅在某些 Activities 上)。对于默认的 Android 键盘,可以在“设置”下(在 Word Suggestion Settings 下)找到。
有没有办法只在您的应用程序中禁用它,而不需要用户手动去执行它?我基本上希望用户在不提供任何提示的情况下输入单词。
谢谢!
【问题讨论】:
标签: android
当有人使用我的应用程序时,我想关闭在软/虚拟键盘上显示“建议的单词”(仅在某些 Activities 上)。对于默认的 Android 键盘,可以在“设置”下(在 Word Suggestion Settings 下)找到。
有没有办法只在您的应用程序中禁用它,而不需要用户手动去执行它?我基本上希望用户在不提供任何提示的情况下输入单词。
谢谢!
【问题讨论】:
标签: android
在为 2.0+ 开发时,假定的方式是设置 android:inputType="textNoSuggestions" (ref)。
不幸的是,HTC Desire 2.2(可能还有其他 HTC Sense 设备)上仍然显示建议。
使用 android:inputType="textVisiblePassword" 将无济于事,而且 HTC 的软件键盘不允许您切换语言。
所以我坚持android:inputType="textFilter" 禁用建议。
【讨论】:
android:inputType="textNoSuggestions|textVisiblePassword"
您可以通过在 xml 中添加以下行来禁用软键盘上的建议 -
android:inputType="textNoSuggestions"
但是根据this 文章,IME(键盘)可能支持也可能不支持。
如果出现这个问题,下面的方法肯定有效-
android:inputType="textNoSuggestions|textVisiblePassword"
【讨论】:
这适用于我的股票键盘,即使在 HTC 2.2 上也是如此
final EditText et = (EditText) findViewById(R.id.SearchText);
et.setInputType(et.getInputType()
| EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS
| EditorInfo.TYPE_TEXT_VARIATION_FILTER);
【讨论】:
在我运行 Nougat 的 6P 上,没有任何效果。虽然它是空的,但建议栏保持不变,因为它的右侧有麦克风图标。 为了摆脱这种情况,我在其中一个 cmets 中使用了 fingerup 的建议,它奏效了! 所以我决定写一个实际的答案,这样人们就不会错过它。 回顾一下我用过的东西:
android:inputType="textNoSuggestions|textFilter|textVisiblePassword"
android:privateImeOptions="nm"
inputType="textNoSuggestions|textFilter|textVisiblePassword" 阻止建议,privateImeOptions="nm"(代表“无麦克风”)阻止显示栏,因为它仍然会因为麦克风按钮在其中。
因此有必要同时使用这两个属性,因为如果您所做的只是不指定麦克风,那么该栏仍会显示推荐。
再次感谢手指提到 nm 技巧。 ;)
【讨论】:
我知道有两种方法可以禁用自动完成功能。一种方法是通过 XML 在布局 xml 中设置 android:inputType="textVisiblePassword"。
另一种方式是通过如下代码
EdtiText editTextBox = findViewById(R.id.myEditTextView);
editTextBox.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
【讨论】:
我在使用三星设备时遇到了同样的问题:
android:inputType="textNoSuggestions|textFilter|textVisiblePassword"
只有在将 inputType 设置为 password 并且 visiblePassword 对我有用之后:
android:inputType="textPassword|textVisiblePassword"
【讨论】:
android:inputType="textPhonetic" 在 Android 1.6 上隐藏软键盘建议。
【讨论】:
希望这对你有用,
editText.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES|InputType.TYPE_TEXT_FLAG_MULTI_LINE|InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
【讨论】:
如果您在活动中使用InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS,它将正常工作。
如果是DialogFragment,您应该将InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS 放在
onActivityCreated() 处理程序如下:-
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
EditText editTextUsername = (EditText)dialogView.findViewById(R.id.txtUsername);
editTextUsername.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
}
【讨论】: