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
<!--定义数组-->
<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;
@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);
}
}