一.Spinner(下拉列表):
編碼實現:先要在佈局文件中定義Spinner組件,然後將可選內容通過ArrayApadter和下拉列表連接起來,最後要獲得用戶選擇選項,要設計事件監聽setOnItemSelectedListener並實現其中的onItemSelected,從而獲得用戶所選擇的內容。
其中ArrayAdapter適配器,它的作用是連接數據源與視圖,也就是可以將數組裏面的數據,在spinnner中顯示。
實例:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
/>
</LinearLayout>
代碼部分:
public class MainActivity extends Activity {
public static final String[] m_Countries = {"O型","A型","B型","AB型","其他"};
private TextView textView;
private Spinner spinner;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textView1);
spinner = (Spinner)findViewById(R.id.spinner1);
//將可選內容與ArrayAdapter連接
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m_Countries);
//設置下拉列表風格
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//將adapter添加到spinner中
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
displayToast("你選中了"+m_Countries[arg2]);
textView.setText("你的血型是:"+m_Countries[arg2]);
//設置顯示當前選擇的項
arg0.setVisibility(View.VISIBLE);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
public void displayToast(String text){
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
運行界面:
當選中血型之後會有提示信息,然後將TextView中顯示內容改變爲選中類型。
二.AutoCompleteTextView和MultiAutoCompleteTextView(自動提示):
AutoCompleteTextView:支持基本的自動完成功能,適用在各種搜索功能中,並且可以根據自己的需求設置他的默認顯示數據。
MultiAutoCompleteTextView:可支持選擇多個值(在多次輸入的情況下),分別用分隔符分開,並且在每個值選中的時候再次輸入值時會自動去匹配,例如短信發送時,聯繫人的添加。
佈局實現:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<MultiAutoCompleteTextView
android:id="@+id/multiAutoCompleteTextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</MultiAutoCompleteTextView>
</LinearLayout>
代碼實現:
public class MainActivity extends Activity {
public static final String[] auto = {"tiger","bull",
"horse","elephant","dog","pig","duck","bee","cat","dove","eagle","fish","whale"};
private TextView textView;
private ArrayAdapter<String> adapter ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textView1);
//關聯關鍵字
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,auto);
AutoCompleteTextView autoView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
//將adapter添加到AutoCompleteTextView中。
autoView.setAdapter(adapter);
MultiAutoCompleteTextView multView = (MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView1);
//將adapter添加到MultiAutoCompleteTextView中。
multView.setAdapter(adapter);
multView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
運行圖片:
AutoCompleteTextView:
MultiAutoCompleteTextView:
兩着都可以通過setThreshold()方法來設置輸入多少字符開始檢索。其默認爲2個字符。
三.DatePicker、TimePicker(日期和時間):
android中用DatePicker來實現日期,TimePicker來實現時間。
實現過程:
現在佈局文件中定義DatePicker和TimePicker,然後通過Calendar類獲得系統時間,接着通過init()方法將日期傳遞給DatePicker,並設置OnDateChangedListener來監聽日期改變,當時間被改變時需要設置setOnTimeChangedListener()監聽來設置時間。
佈局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="日期時間設置" />
<DatePicker
android:id="@+id/datePicker1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#228b22" />
<TimePicker
android:id="@+id/timePicker1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
代碼實現:
public class MainActivity extends Activity {
private TextView textview;
private DatePicker datepicker;
private TimePicker timepicker;
//java中的Calendar
Calendar c;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
c = Calendar.getInstance();
textview = (TextView)findViewById(R.id.textView1);
datepicker = (DatePicker)findViewById(R.id.datePicker1);
//將日記初始化爲當前系統時間,並設置起監聽事件
datepicker.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
//當提起更改時,在這裏處理。
}
});
timepicker = (TimePicker)findViewById(R.id.timePicker1);
//設置爲24小時制顯示
timepicker.setIs24HourView(true);
timepicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
//時間改變時處理。自己可添加
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
運行圖片: