android 入力履歴 - オートコンプリートテキストビューとCompletionHintView




カスタマイズ リスナー (2)

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

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

完了ヒントをスタイルする方法の実例がありますか?


Answers

あなたはどのようなスタイルを適用しようとしているかを詳しく説明できますか?

基本的なテキストのスタイリングであれば、 Spannableを作成し、その結果で完了ヒントを設定することができます。これはCharSequence受け入れるためCharSequenceこの記事では、 Spannableしてスタイルを適用する例を示します。

実際に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"/>

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

これらの提案のいずれでも十分でない場合、おそらく同じ結果を得ることができる、あまり面白くない回避策を考えることができます。


他の誰かがsearchview変数にnullptrを持っているなら、私は項目の設定が少し違うことに気付きました:

古い:

android:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView"

新しい:

app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView"

詳細については、更新されたドキュメントがここにあります







android autocompletetextview