第一步:在xml引入AutoComplementTextView
<AutoCompleteTextView android:completionThreshold="1" android:layout_width="match_parent" android:layout_height="40dp" android:id="@+id/main_search_autoCompleteTextView" android:background="@drawable/main_search_bar" android:singleLine="true"
<!-- 设置虚拟键盘上的“完成”、“下一步属性”--> android:imeOptions="actionDone"
android:layout_marginRight="10dp" android:layout_centerVertical="true" android:textColor="@color/white" android:hint="請輸入關鍵字進行搜索"
<!--AutoCompleteTextView里面内容与边框的距离 --> android:padding="10dp" <!-- 在AutoCompleteTextView的起始位置加一张图片(一般是一种搜索标志的图片),
好处:焦点的起始位置在该图片的后面而不是和该图片部分重叠!!!--> android:drawableLeft="@drawable/main_search_search" />
<!--不重要的imageButton,用来删除AutoCompleteTextView的输入内容用的-->
<ImageButton android:id="@+id/hidenHistory_bt" android:layout_width="wrap_content" android:layout_height="36dp" android:layout_alignRight="@id/main_search_autoCompleteTextView" android:layout_marginRight="2dp" android:layout_marginTop="6dp" android:background="@null" android:layout_centerVertical="true" android:paddingLeft="12dp" android:paddingRight="8dp" android:src="@drawable/main_search_delete_error" />
一下都是java代码:
第二步:相关内容以dialog方式提示
//动态搜索栏的adapter配置信息(就是自动提示与输入关键字相关的内容) this.historyAdapter = new ArrayAdapter<String>(this, R.layout.list_detail_mainseach, R.id.textView, new String{"qqq","www","rrr"}); main_search_autoCompleteTextView.setAdapter(this.historyAdapter);
第三步:监听“输入内容的改变【比如增加关键字】”
main_search_autoCompleteTextView.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { keyword = main_search_autoCompleteTextView.getText().toString().trim(); // autoCompleteTextView.dismissDropDown(); if (!TextUtils.isEmpty(keyword)) { Toast.makeText(MainSearchActivity.this, ":" + keyword, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainSearchActivity.this, "输入为空", Toast.LENGTH_SHORT).show(); } } @Override public void afterTextChanged(Editable s) { } });
第四步:监听“相关内容的提示项”【就是你监听“第二步中产生的dialog的每一项提示”,可以用来保存为历史搜索记录】
main_search_autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) { String selection = (String) parent.getItemAtPosition(position); saveHistory(); main_search_autoCompleteTextView.setText(selection); //set the focus position main_search_autoCompleteTextView.setSelection((main_search_autoCompleteTextView.getText().toString()).length()); } });第五步:监听虚拟键盘上的“完成”按钮(当按下完成按钮时可以将该关键字保存进历史记录)
main_search_autoCompleteTextView.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { keyword = main_search_autoCompleteTextView.getText().toString().trim(); main_search_autoCompleteTextView.dismissDropDown(); KeyBoardUtil.hideSoftKeyboard(MainSearchActivity.this); if (!TextUtils.isEmpty(keyword)) { Toast.makeText(MainSearchActivity.this, ":" + keyword, Toast.LENGTH_SHORT).show(); saveHistory(); } else { Toast.makeText(MainSearchActivity.this, "输入为空!", Toast.LENGTH_SHORT).show(); } return true; } return false; } });