Android AutoCompleteTextView 控件实现类似被搜索提示,效果如下

1.首先贴出布局代码activity_main.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >    <AutoCompleteTextView android:id="@+id/autocomplete" android:layout_width="fill_parent" android:layout_height="wrap_content" />    <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:orientation="horizontal" >        <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:text="Please input the text:" android:textSize="18sp" />        <EditText android:id="@+id/ET" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="只能输入10位数字" android:inputType="number" />    </LinearLayout></LinearLayout>

2.控件下拉列表项布局文件main_item_row.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >    <TextView android:id="@+id/brandName" android:layout_width="fill_parent" android:layout_height="30dp" android:textSize="18sp" />    <TextView android:id="@+id/searchText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" /></LinearLayout>

3.java 代码实现:MainActivity.java

package com.example.autocompletetextview; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AutoCompleteTextView; import android.widget.EditText; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); AutoCompleteTextView autoCompleteTextView; private EditText mEditText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addItems(); autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autocompleteTV); SimpleAdapter notes = new SimpleAdapter(this, list, R.layout.main_item_row, new String[] { "brandSearchText", "brandName" }, new int[] { R.id.searchText, R.id.brandName }); autoCompleteTextView.setAdapter(notes); autoCompleteTextView.setThreshold(1); autoCompleteTextView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { TextView tv = (TextView) arg1.findViewById(R.id.brandName); autoCompleteTextView.setText(tv.getText().toString() + " "); autoCompleteTextView.setSelection((autoCompleteTextView .getText().toString()).length()); } }); /** TextWatcher操作 */ mEditText = (EditText) findViewById(R.id.ET); mEditText.addTextChangedListener(mTextWatcher); } private void addItems() { HashMap<String, String> item; item = new HashMap<String, String>(); item.put("brandSearchText", "NOKIA nuojiya NJY"); item.put("brandName", "诺基亚"); list.add(item); item = new HashMap<String, String>(); item.put("brandSearchText", "SVMSUN SX sanxing"); item.put("brandName", "三星"); list.add(item); item = new HashMap<String, String>(); item.put("brandSearchText", "SVMSUN SX sanzhi"); item.put("brandName", "三只松鼠"); list.add(item); item = new HashMap<String, String>(); item.put("brandSearchText", "摩托罗拉  moto MTLL motuoluola motoloar"); item.put("brandName", "摩托罗拉"); list.add(item); } TextWatcher mTextWatcher = new TextWatcher() { private CharSequence temp; private int editStart; private int editEnd; @Override public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) { temp = s; } @Override public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) { } @Override public void afterTextChanged(Editable s) { editStart = mEditText.getSelectionStart(); editEnd = mEditText.getSelectionEnd(); if (temp.length() > 10) { Toast.makeText(MainActivity.this, "你输入的字数已经超过了限制!", Toast.LENGTH_SHORT).show(); s.delete(editStart - 1, editEnd); int tempSelection = editStart; mEditText.setText(s); mEditText.setSelection(tempSelection); } } }; }

更多相关文章

  1. 让editView、AutoCompleteTextView开始捕获的焦点
  2. android踩坑日记
  3. Android——新手指引 指定View高光显示自定义控件
  4. Android(安卓)生成keystore(user & debug) 并 Android(安卓)Maps
  5. ReactNative调用原生封装的代码和控件
  6. 在Android模拟器里安装apk
  7. Android中替换ExpandableListView控件前面的箭头图标
  8. android根据屏幕高度改变item占ListView高度
  9. Android基本控件 EditText

随机推荐

  1. Android(安卓)Intent中的FLAG,很全
  2. Android客户端自动更新代码
  3. Android(安卓)对UI操作的工具类UIUtils
  4. android 客户端 smtp 协议发送数据
  5. Android获取单选与复选框的值
  6. android 判断文件是否存在
  7. Android之MediaPlayer(两种)基本使用方式
  8. C#内置泛型委托之Func委托
  9. C++单例模式的懒汉模式和饿汉模式详解
  10. ASP.NET CORE实现跨域