Android高级控件,是指具有更高级功能的控件,这类控件丰富了界面的多样性,强化了程序的功能,更好地实现了Android应用程序,比如,进度条,自动完成文本,Spinner等等。
自动完成文本框。
在Android开发中提供了两种智能输入框——AutoCompleteTextView和MultiAutoCompleteTextView。它们的功能类似于百度在搜索栏输入信息的时候,弹出与输入信息接近的提示信息,然后用户选择点击需要的信息,自动完成文本输入。AutoCompleteTextView和MultiAutoCompleteTextView都是可编辑的文本视图,前者能够实现动态匹配输入的内容,后者则能够对用户键入的文本进行有效地扩充提示。MultiAutoCompleteTextView可以在输入框一直增加选择值
AutoCompleteTextView控件
代码如下
xml代码
<AutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/actv_main_auto" android:completionThreshold="1" />
values下面的strings.xml
Java代码<!--定义数组--> <string-array name="date"> <item>李一</item> <item>李二</item> <item>李三</item> <item>王五</item> <item>老王</item> <item>110</item> <item>120</item> </string-array>
package com.example.g160828_android07_widetpusl; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.MultiAutoCompleteTextView; import android.widget.Spinner; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { private AutoCompleteTextView actv_main_auto; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //拿到自动补全控件的ID actv_main_auto = (AutoCompleteTextView) findViewById(R.id.actv_main_auto); //获取字符创数组 String date[]=getResources().getStringArray(R.array.date); //适配器 ArrayAdapter adapterder=new ArrayAdapter(this,R.layout.item_actv,date); //让控件设置适配器 actv_main_auto.setAdapter(adapterder); } }
MultiAutoCompleteTextView控件
xml代码
<MultiAutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/mact_main_mult" android:completionThreshold="1" />
values下面的strings.xml
<!--定义数组--> <string-array name="date"> <item>李一</item> <item>李二</item> <item>李三</item> <item>王五</item> <item>老王</item> <item>110</item> <item>120</item> </string-array>
values下面的strings.xml
<!--定义数组--> <string-array name="date"> <item>李一</item> <item>李二</item> <item>李三</item> <item>王五</item> <item>老王</item> <item>110</item> <item>120</item> </string-array>
Java代码
values下面的strings.xml
<!--定义数组--> <string-array name="date"> <item>李一</item> <item>李二</item> <item>李三</item> <item>王五</item> <item>老王</item> <item>110</item> <item>120</item> </string-array>
Java代码
package com.example.g160828_android07_widetpusl; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.MultiAutoCompleteTextView; import android.widget.Spinner; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { private AutoCompleteTextView actv_main_auto; private MultiAutoCompleteTextView mact_main_mult; private Spinner sp_main_spinner; private Spinner sp_main_spinner2; private Map map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //拿到多个自动补全控件的ID mact_main_mult = (MultiAutoCompleteTextView) findViewById(R.id.mact_main_mult); //获取字符创数组 String date[]=getResources().getStringArray(R.array.date); //适配器 ArrayAdapter adapterder=new ArrayAdapter(this,R.layout.item_actv,date); //设置多个自动完成文本框的分隔符 MultiAutoCompleteTextView.Tokenizer tokenizer=new MultiAutoCompleteTextView.CommaTokenizer(); mact_main_mult.setTokenizer(tokenizer); //让控件设置适配器 actv_main_auto.setAdapter(adapterder); } }
下拉列表(Spinner),每次只显示用户选中的元素,当用户再次点击时,会弹出选择列表供用户选择,而选择列表中的元素同样是来自适配器。
<Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/sp_main_spinner"> </Spinner> <Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/sp_main_spinner2"> </Spinner>
values下面的strings.xml<!--定义数组-->
<string-array name="province"> <item>湖南省</item> <item>安徽省</item> <item>四川省</item> </string-array> <string-array name="hunan"> <item>怀化市</item> <item>洪江市</item> <item>长沙市</item> </string-array> <string-array name="anhui"> <item>合肥市</item> </string-array> <string-array name="sichuan"> <item>攀枝花</item> <item>六盘水</item> </string-array>
package com.example.g160828_android07_widetpusl; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.MultiAutoCompleteTextView; import android.widget.Spinner; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { private AutoCompleteTextView actv_main_auto; private MultiAutoCompleteTextView mact_main_mult; private Spinner sp_main_spinner; private Spinner sp_main_spinner2; private Map map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //拿到下拉框控件的ID sp_main_spinner = (Spinner) findViewById(R.id.sp_main_spinner); sp_main_spinner2 = (Spinner) findViewById(R.id.sp_main_spinner2); //获取省的数组 final String provinces[]=getResources().getStringArray(R.array.province); //拿到市的数组 String hunan[]=getResources().getStringArray(R.array.hunan); String anhui[]=getResources().getStringArray(R.array.anhui); String sichuan[]=getResources().getStringArray(R.array.sichuan); //适配器 ArrayAdapter adapterderProvinces=new ArrayAdapter(this,R.layout.item_actv,provinces); //map集合 map = new HashMap(); //赋值 map.put(provinces[0],hunan); map.put(provinces[1],anhui); map.put(provinces[2],sichuan); //监听 sp_main_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { String pname=provinces[i]; get(pname); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); //让控件设置适配器 sp_main_spinner.setAdapter(adapterderProvinces); } // public void get(String s){ //通过健获得数组 String aa[]=(String[])map.get(s); //市的适配器 ArrayAdapter adapterdershi= new ArrayAdapter(this,R.layout.item_actv,aa); sp_main_spinner2.setAdapter(adapterdershi); } }