18

AutocompleteTextView現在、コンポーネントを使用してオートコンプリート フィールドを実装しています。

結果の数で補完ヒントを追加しようとしていますが、ドロップダウン リスト要素とは異なるスタイルにしたいだけです。コンポーネントには名前付きの属性がありますが、completionHintView以前に定義したレイアウトを指定するたびに、NullPointerException.

補完ヒントのスタイルを設定する方法に関する実用的な例はありますか?

4

1 に答える 1

5

適用しようとしているスタイリングの種類について詳しく教えてください。

それが単なる基本的なテキスト スタイリングである場合は、おそらく を作成Spannableし、その結果で補完ヒントを設定できますCharSequenceSpannableを作成してスタイルを適用する例は、この投稿で説明されています。

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ます。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"/>

この 2 番目のオプションはおそらく最も使いやすく、TextView のパラメーターに完全にアクセスできます。このビューのテキストに複数のスタイルを適用する必要がある場合は、最初の提案を組み込むことができます。これにより柔軟性が向上します。

これらの提案のどちらも十分でない場合は、おそらく同じ結果を得ることができる、あまり洗練されていない回避策をいくつか考えることができます。

于 2011-11-06T00:56:45.270 に答える