Autocompletion(自动完成文本框)
继承与EditText,比编辑框多了一个功能:
用户输入一定字符后,显示一个下拉菜单,提供给用户从中选择,选择的某个选项,会自动填写该文本框
其实可以看成搜索框吧
接着我们实现一个简单的搜索框布局案例吧:
实例代码:
main.xml文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context=".MainActivity" > <AutoCompleteTextView android:id="@+id/autoText" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:completionHint="请输入搜索内容" android:completionThreshold="2" android:layout_weight="7" android:dropDownHorizontalOffset="10dp" /> <Button android:id="@+id/btnsearch" android:layout_width="80dp" android:layout_height="64dp" android:layout_marginLeft="5px" android:background="@drawable/button_selector" /> </LinearLayout>
|
代码解释:
这里我们定义了一个自动完成文本框:AutoCompleteTextView和一个按钮
completionHint:设置下拉菜单中的提示标题
complerionThreshold:指定用户至少输入多少个字符才会显示提示,这里的话我们指定了2个
dropDownHorizontalOffset:指定下拉菜单与文本之间的水平间距,这里的话我们设置为10dp;
dropDownVerticalOffset:同上,不过这个是竖直方向的偏移
dropDownHeight/Width:分别是指定下拉菜单的高度与宽度
popupBackground:为下拉菜单提供一个背景
MainActivity.java部分代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package com.jay.demo; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.app.Activity; public class MainActivity extends Activity { private static final String[] data = new String[] { "呵呵","呵呵呵","呵呵呵呵呵呵","呵呵呵呵呵", "呵呵呵呵呵呵","嘻嘻" }; private AutoCompleteTextView searchtext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); searchtext = (AutoCompleteTextView) findViewById(R.id.autoText); ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,data); searchtext.setAdapter(adapter); } }
|
运行截图:
代码解释:
首先findViewById()找到自动完成文本框,接着用ArrayAdapter创建一个存储字符串数组的adapter
ArrayAdapter构造方法中的参数依次为:上下文,android的一个默认的下拉条目样式,最后是字符串数组
接着setAdapter即可!!
触发事件的话比较简单,这里的话就略过了….
MultiAutoCompleteTextView组件:
多提示项的自动完成文本框
截图:
代码实现:
只需要修改一下AutoCompleteTextView的标签和一些参数即可:
main.xml:
1 2 3 4 5 6 7 8 9
| <MultiAutoCompleteTextView android:id="@+id/autoText" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:completionThreshold="1" android:layout_weight="7" android:dropDownHorizontalOffset="10dp" />
|
MainActivity.java
1 2 3 4 5
| private MultiAutoCompleteTextView searchtext; searchtext = (MultiAutoCompleteTextView) findViewById(R.id.autoText); ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_dropdown_item_1line,data); searchtext.setAdapter(adapter); searchtext.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
|
代码分析:
为其设置适配器以后,setTokenizer是为其设置分隔符
其实这两个都差不多的,了解有个印象即可。