以编程方式生成时的 EditText 问题

问题描述 投票:0回答:5

我一直在尝试创建一个打开单词建议的文本编辑器。这就是我一直在做的事情,希望让它发挥作用,但到目前为止还没有这样的运气

EditText test = (EditText) new EditText(Page.this);
test.setRawInputType(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
test.setRawInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
test.setRawInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1);
params.setMargins(5, 0, 5, 0);

test.setLayoutParams(params);
test.setText(text);
test.setId(id);
holder.addView(test);

holder 是容器。 Edittext 具有从该数据库加载的文本,但我认为这并不重要。一切正常。 EditText 加载并且数据库内容很好,这就是我没有发布该部分的原因。我遇到的唯一问题是自动更正或任何形式的自动完成功能不起作用。我有一些从 xml 加载的 EditText,它们似乎工作正常。我无法从 xml 加载这些内容,因为根据用户的输入,会生成额外的 EditText,因此我必须以编程方式执行此操作。对于为什么这不起作用有什么建议吗?

是的,我已经查看了文档,但似乎也没有找到答案,因为我添加的标志没有完成这项工作。

意图 以编程方式添加启用了自动完成功能的编辑文本

问题: 已生成编辑文本,但不显示任何文本支持辅助作为自动完成或正确

提前感谢 StackOverFlow 国家

java android autocomplete android-edittext autocorrect
5个回答
2
投票

您调用

setRawInputType()
三次,这会覆盖前两次调用,而是调用
setRawInputType()
一次并使用
|
传递所有三个标志:

test.setRawInputType(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT | 
                     InputType.TYPE_TEXT_FLAG_MULTI_LINE | 
                     InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

1
投票

添加

InputType.TYPE_CLASS_TEXT
对我有用


0
投票

如果您想要一个具有自动完成功能的可编辑文本视图,您可能只想立即使用AutoCompleteTextView,这样可以省去一些实现上的麻烦。


0
投票

好吧,我发现需要做什么,最好的选择是使用称为布局充气机的东西。

这是因为在 xml 中完成时,为 Edittext 设置了很多东西。 为您的 xml 文件创建此(如下)。请注意,您只能有一个根元素。因此,每个模板都需要一个新文件。

注意我也有一个 ID

使用此(如下)以编程方式插入

EditText Stest = (EditText) getLayoutInflater().inflate(R.layout.section_header, null);



<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:inputType="textAutoCorrect|textCapWords"
    android:id="@+id/section" >
</EditText>

这样它将插入并具有所有默认值以及您创建的任何添加内容。 事实上,由于大多数使用 XML,因此缺乏对服务器代码库的支持。

这样您仍然可以使用动态插入代码,但使用 xml 来定义插入的对象/视图的行为方式


0
投票

关键是包括

InputType.TYPE_CLASS_TEXT
标志。

Java:

text.setRawInputType(InputType.TYPE_CLASS_TEXT |
                     InputType.TYPE_TEXT_FLAG_AUTO_CORRECT | 
                     InputType.TYPE_TEXT_FLAG_MULTI_LINE | 
                     InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

科特林:

text.setRawInputType(InputType.TYPE_CLASS_TEXT
                     or InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
                     or InputType.TYPE_TEXT_FLAG_MULTI_LINE
                     or InputType.TYPE_TEXT_FLAG_AUTO_CORRECT)
© www.soinside.com 2019 - 2024. All rights reserved.