首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AutocompleteTextview和CompletionHintView

AutocompleteTextview和CompletionHintView
EN

Stack Overflow用户
提问于 2010-09-01 04:54:01
回答 1查看 4.3K关注 0票数 18

我目前正在使用AutocompleteTextView组件实现一个自动补全字段。

我正在尝试添加一个带有结果数量的完成提示,并且只想让它的样式不同于dropdown list元素。该组件上有一个名为completionHintView的属性,但每次我为它提供先前定义的布局时,它都会抛出一个NullPointerException

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

EN

回答 1

Stack Overflow用户

发布于 2011-11-06 08:56:45

您能详细说明您希望应用哪种样式吗?

如果只是基本的文本样式,您可以构建一个Spannable并使用结果设置完成提示,因为它接受CharSequence。在this post中演示了构建Spannable并对其应用样式的示例。

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

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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中引用它,如下所示

代码语言:javascript
复制
<AutoCompleteTextView android:id="@+id/autocomplete_textview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:completionHintView="@layout/completion_hint_view"/>

第二个选项可能是最容易使用的,可以让您完全访问TextView的参数。如果您需要将多种样式应用于此视图中的文本,则可以合并第一个建议,因为这将为您提供更大的灵活性。

如果这两个建议都不够,我可以想出一些不那么优雅的变通办法,可能会让你得到同样的结果。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3613152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档