第五章 用戶界面基礎(chǔ)(AutoCompleteTextView、DatePicker和TimePicker)

參考資料:
《Android應(yīng)用程序開發(fā)》ISBN 9787302283164
參考軟件:
Android Studio、Eclipse+ADT、Android SDK、JDK
AutoCompleteTextView
?自動(dòng)編輯文本框(AutoCompleteTextView)繼承自EditText,能夠接受用戶的輸入編輯,但是有這自己的特色功能:輸入一定的字符以后會(huì)彈出下拉列表提示供用戶選擇,用戶選擇之后會(huì)自動(dòng)填充文本框。這項(xiàng)功能正如瀏覽器的輸入提示:

由于自動(dòng)編輯文本框繼承于EditText,它能夠支持EditText的全部屬性,但是在輸入提示方面它有著自己的獨(dú)特屬性:
??????????android:completionHint????????????為彈出下拉菜單指定提示標(biāo)題
??????????android:completionThreshold ? ??指定輸入多少個(gè)字符以后會(huì)出現(xiàn)提示
??????????android:dropDownHeight??????????指定下拉菜單的高度
??????????android:dropDownHorizontalOffset ? ? ??指定下拉菜單和文本框的水平偏移
??????????android:dropDownVerticalOffset ? ? ? ? ??指定下拉帶單和文本框的垂直偏移
??????????android:dropDownWidth ? ? ? ? ? ? ? ?? ??指定下拉菜單寬度
??????????android:popupBackground?????????????????為下拉菜單設(shè)置背景
輸入提示框中會(huì)有我們輸入信息的補(bǔ)充,因此我們需要給輸入提示框配置信息,這是要通過適配器實(shí)現(xiàn)。下面我們創(chuàng)建一個(gè)帶輸入提示框的AutoCompleteTextView
實(shí)例操作:
1.在可視化界面拖入一個(gè)自動(dòng)完成編輯框,并設(shè)置2個(gè)字符彈出提示和編輯框出布局正中間
?<AutoCompleteTextView
????????android:id="@+id/autoCompleteTextView1"
??????? android:layout_width="match_parent"
??????? android:layout_height="wrap_content"
??????? android:layout_gravity="center"
??????? android:completionThreshold="2"
??????? android:hint="請(qǐng)輸入"
??????? android:ems="10">
?
????????<requestFocus/>
????</AutoCompleteTextView>
2.創(chuàng)建適配器。適配器可以通過java數(shù)組或資源文件創(chuàng)建,這里我們采用資源文件創(chuàng)建適配器
資源文件:
<?xml version="1.0"encoding="UTF-8"?>
<resources?>
????<string-array?name="data">
????????<item?>nanjing-xuanwu</item>
????????<item?>nanjing-jiangning</item>
????????<item?>nanjing-qixia</item>
????????<item?>nanjing-jianye</item>
????</string-array>
</resources>
java代碼:
?AutoCompleteTextView atc =(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);//獲取組件
???????
??????? ArrayAdapter<CharSequence> aa =ArrayAdapter.createFromResource(this, R.array.data,R.layout.support_simple_spinner_dropdown_item);//創(chuàng)建
? ? ? ?
3.綁定適配器
????? atc.setAdapter(aa);
運(yùn)行結(jié)果

總結(jié):對(duì)于AutoCompletionEditText使用,主要是完善它的提示功能。提示詞使用適配器加入,對(duì)于適配器創(chuàng)建,主要有通過資源文件創(chuàng)建和java字符串創(chuàng)建兩種。
?DatePicker日期拾取器和TimePicker時(shí)間拾取器
?為了能夠讓用戶選擇時(shí)間日期,安卓提供了DatePicker日期拾取器和TimePicker時(shí)間拾取器。這兩個(gè)組建的使用十分簡(jiǎn)單,在eclipse的可視化界面上直接拖拽到布局中即可。當(dāng)用戶在事件日期選擇器上進(jìn)行選擇之后,需要加將用戶的選擇讀取出來,這需要給組件添加相應(yīng)的監(jiān)聽器。
一??????日期拾取器
?????1.在eclipse可視化界面上拖拽組件到布局中
????<DatePicker
????????android:id="@+id/datePicker1"
????????android:layout_width="wrap_content"
????????android:layout_height="wrap_content"/>
?????2.布局中獲取日期組件
DatePicker?dp?=?(DatePicker)findViewById(R.id.datePicker1);
?????3.創(chuàng)建日歷對(duì)象,獲取當(dāng)前的日歷時(shí)間
????????Calendar?c?=?Calendar.getInstance();
????????int?year?=?c.get(Calendar.YEAR);
????????int?month?=?c.get(Calendar.MONTH);
????????int?date?=?c.get(Calendar.DATE);
?????4.初始化日期選擇器,并且綁定監(jiān)聽器
????????dp.init(year,?month,?date,?new?OnDateChangedListener()?{
????????????
????????????@Override
????????????publicvoid?onDateChanged(DatePicker?arg0,?int?arg1,?int?arg2,?int?arg3)?{
????????????????
????????????????Toast.makeText(MainActivity.this,
????????????????????????MainActivity.this.year+?"?"?+?MainActivity.this.month?+?"?"?+?MainActivity.this.date,
????????????????????????Toast.LENGTH_LONG).show();
????????????????
????????????}
????????});
運(yùn)行效果如下,事件監(jiān)聽方面:當(dāng)點(diǎn)擊日期后會(huì)有提示框顯示

?
二??????時(shí)間拾取器
1.在eclipse可視化界面上拖拽組件到布局中
????<TimePicker
????????android:id="@+id/timePicker1"
????????android:layout_width="wrap_content"
????????android:layout_height="wrap_content"/>
2.布局中獲取日期組件
TimePicker?tp?=?(TimePicker)findViewById(R.id.timePicker1);
?
3.創(chuàng)建日歷對(duì)象,獲取當(dāng)前的日歷時(shí)間
????????Calendar?c?=?Calendar.getInstance();
????????hour?=?c.get(Calendar.HOUR);
????????munite?=?c.get(Calendar.MINUTE);
????????second?=?c.get(Calendar.SECOND);
4.綁定監(jiān)聽器
????????tp.setOnTimeChangedListener(new?OnTimeChangedListener()?{
????????????
????????????@Override
????????????publicvoid?onTimeChanged(TimePicker?arg0,?int?arg1,?int?arg2)?{
????????????????
????????????????
????????????????Toast.makeText(MainActivity.this,
????????????????????????MainActivity.this.hour+?"?"?+?MainActivity.this.munite?+?"?"?+?MainActivity.this.second,
????????????????????????Toast.LENGTH_LONG).show();
????????????}
????????});
運(yùn)行效果如下,點(diǎn)擊時(shí)間選擇之后會(huì)有提示框顯示

?