利用Spinner可以實現下拉框,效果如下
其實完全可以用AlertDialog來實現。
AlertDialog有一個方法:public AlertDialog.Builder setAdapter (ListAdapter adapter, DialogInterface.OnClickListener listener)
可以很自然的聯想到,左邊是對應的list數據adapter,右邊就是對應的點擊事件。於是乎,用AlertDialog就能很容易的實現下拉框咯!而且用Adapter可以很容易的自定義下拉框的樣式等等!
1、自定義下拉框每個item的listAdapter
Adapter --(繼承)--> ListAdapter
|--BaseAdapter--> ArrayAdapter
|--BaseAdapter--> SimpleAdapter
定義一個繼承自BaseAdapter的類MyDialogListAdapter ;
public class MyDialogListAdapter extends BaseAdapter {
}
2、將對應的數據list填入到這個adapter中
heightListAdapter = new MyDialogListAdapter(this, heightDataList);
3、設置按鈕的點擊事件,點擊後顯示出下拉框形式的dialog
heightView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TextView titleView = (TextView) LayoutInflater.from(GradeImageActivity.this).inflate(R.layout.dialog_title_view, null);
titleView.setText("選擇身高");
new AlertDialog.Builder(GradeImageActivity.this)
.setCustomTitle(titleView)
.setAdapter(heightListAdapter,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
heightTextView.setText(heightDataList.get(which));
}
}).show();
}
});
又自定了title的view,簡單的將title置中。