自动匹配文本
在百度搜索时经常会出现输入一般时,下拉框自动匹配了几条符合期望的信息以供选择,这就是自动匹配文本
在安卓中自动匹配文本有单一匹配和多重匹配
单一匹配是只匹配一次,多重可以通过分隔符多次匹配
单一匹配通过AutoCompleteTextView
多重匹配通过MultiAutoCompleteTextView
俩种实现方法差别不大 所以一起实现
实现过程
步骤1:
编写布局文件
(completionThreshold属性表示输入多少字符时开始匹配)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
>
<AutoCompleteTextView
android:id="@+id/autotext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入要搜索的关键词"
android:completionThreshold="2"/>
<MultiAutoCompleteTextView
android:id="@+id/mulact"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="2"/>
</LinearLayout>
步骤2:编写代码
单一和多重差别只是在于多重在适配器与控件联系后还要设置一下分隔符,下面例子是用逗号作为分隔符
public class MainActivity extends AppCompatActivity {
private AutoCompleteTextView mAutoCompleteTextView;
private MultiAutoCompleteTextView mMultiAutoCompleteTextView;
private String[] res = {"hello", "hi", "good", "bad", "hello2", "hi2", "good2", "boy", "god"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
*
*自动匹配文本
*
*/
mAutoCompleteTextView = findViewById(R.id.autotext);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, res); //第二参数表示利用系统提供的布局 第三个参数表示数据源去匹配信息
mAutoCompleteTextView.setAdapter(adapter); //将adapter绑定
/*
*
*多重匹配文本
*
*/
mMultiAutoCompleteTextView = findViewById(R.id.mulact);
mMultiAutoCompleteTextView.setAdapter(adapter);
mMultiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());//设置逗号分隔符
}
}
效果截图:
作者:林浩
原文链接:点击这里