2010-08-31 70 views
16

我目前正在使用AutocompleteTextView组件实现自动填充字段。AutocompleteTextview和CompletionHintView

我想添加一个完成提示的结果数量,只是想对它的样式与下拉列表元素不同。 该组件上有一个名为completionHintView的属性,但每次我给它一个我先前定义的布局时抛出一个NullPointerException

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

+0

似乎没有人有一个例子:)想要显示一些代码,所以也许我们可以通过它看看有什么不对? – 2011-10-13 10:05:30

回答

5

你能详细说明你想要应用什么样的造型吗?

如果它只是基本的文本样式,你可能会建立一个Spannable并设置完成提示与结果,因为它接受CharSequence。在this post中说明了构建Spannable并对其应用样式的示例。

如果你正在寻找一种方式来实际操作TextView(例如填充)的参数,AutoCompleteTextViewsource code似乎提供了一个提示(双关语意)。

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。这种资源的最基本的版本将包含只是一个TextView与此ID:

<?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的参数。如果您需要在此视图中将多种样式应用于文本,则可以合并第一个建议,因为这可以提供更大的灵活性。

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