如何以编程方式禁用预测文本(没有EditText)

时间:2013-04-30 08:48:35

标签: android

有一个Android应用程序包含自制输入字段(没有TextViewEditText元素),因此我必须显示/隐藏键盘,处理用户输入并自行显示输入的符号。

我需要为标准视图禁用预测文本模式。不幸的是,Android View类(android.view.View)没有函数setInputType

有一个可能的解决方案。获取给定视图的InputConnection并更改其属性。但我无法找到如何获取和设置当前InputConnection的实例,遗憾的是,函数onCreateInputConnection也未被调用。

是否有任何方法可以禁用标准视图的预测文本模式?

2 个答案:

答案 0 :(得分:5)

我用过的东西是下面的 - 特别是标签“textNoSuggestions”我认为对你有用!

<EditText android:layout_marginLeft="10px" 
android:layout_width="fill_parent"
android:layout_height="wrap_content" 
android:layout_marginRight="10px"
android:id="@+id/setupactivity_ftpsite" 
android:inputType="textNoSuggestions|textUri">

答案 1 :(得分:2)

对不起,这里是一个更简洁的答案!

类似的东西:

1)显示键盘:

InputMethodManager imm =  (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(myCustomView, InputMethodManager.SHOW_IMPLICIT);

2)在myCustomView(扩展视图)中,添加:

 InputConnection onCreateInputConnection (EditorInfo outAttrs) {
     InputConnection ic = new EditableInputConnection(this);
     outAttrs.inputType = TYPE_TEXT_FLAG_NO_SUGGESTIONS;
     outAttrs.initialCapsMode = ic.getCursorCapsMode(outAttrs.inputType); //guess on this
     return ic;
}

这是应该做什么的总体要点。你可能想要OR outAttrs.inputType而不是设置相等,所以它保留默认状态,或者首先调用父onCreateInputConnection,然后只设置你的outAttrs.inputType(不确定这是否有效)。这应该可以让您非常接近您的解决方案。