AutocompleteTextview和CompletionHintView

我目前正在通过使用AutocompleteTextView组件实现自动填充字段。

我试图添加一个完成提示的结果数量,只是想与它的下拉列表元素的不同风格。 在组件上有一个名为completionHintView的属性,但每次我给它一个我之前定义的布局时,就会抛出一个NullPointerExceptionexception。

有没有人有如何完成提示样式的工作示例?

Solutions Collecting From Web of "AutocompleteTextview和CompletionHintView"

你能否详细说明你正在寻求什么样的造型?

如果只是基本的文本样式,你可能可以build立一个Spannable并设置完成提示和结果,因为它接受一个CharSequence 。 这篇文章举例说明了构buildSpannable并应用样式。

如果您正在寻找一种方法来实际操纵TextView的参数(例如填充), AutoCompleteTextView的源代码似乎提供了一个提示(双关意图)。

 private View getHintView(Context context) { if (mHintText != null && mHintText.length() > 0) { final TextView hintView = (TextView) LayoutInflater.from(context).inflate( mHintResource, null).findViewById(com.android.internal.R.id.text1); hintView.setText(mHintText); hintView.setId(HINT_VIEW_ID); return hintView; } else { return null; } } 

这揭示了Android在您指定的资源引用中查找id text1 。 这样一个资源的最基本的版本将只包含一个带有这个id的TextView

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:textColor="#FF0000" android:textSize="16sp" /> 

在布局文件(比如: completion_hint_view.xml )中保存上面的内容,然后在AutoCompleteTextView按如下方式引用它:

 <AutoCompleteTextView android:id="@+id/autocomplete_textview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:completionHintView="@layout/completion_hint_view"/> 

这第二个选项可能是最简单的使用,并会给你完全访问TextView的参数。 如果您需要将多个样式应用于此视图中的文本,则可以包含第一个build议,因为这会给您更多的灵活性。

如果这些build议都不够,我可以考虑一些不那么优雅的工作,这可能会让你得到相同的结果。