定义出第一个图片的布局和弹出框(一个listView)的布局,,这里就不在多说了~ListView需要自己定义一个MyspinnerAdapter~做好这些准备之后,就是弹出框的实现了~
protected void onCreate(Bundle savedInstanceState) {
|
03 |
super .onCreate(savedInstanceState);
|
04 |
setContentView(R.layout.activity_main);
|
05 |
textView = (TextView) findViewById(R.id.text);
|
06 |
imgView = findViewById(R.id.arrowbut);
|
08 |
list = new ArrayList<String>();
|
12 |
// 实例化一个适配器,list的数据作为Adapter的数据
|
13 |
adapter = new MyspinnerAdapter( this , list);
|
15 |
textView.setText((CharSequence) adapter.getItem( 0 ));
|
16 |
spinnerlayout = (LinearLayout) findViewById(R.id.spinnerid);
|
18 |
imgView.setOnClickListener( new OnClickListener() {
|
21 |
public void onClick(View v) {
|
29 |
@SuppressWarnings ( "deprecation" )
|
30 |
public void showWindow(View v) {
|
32 |
layout = (LinearLayout) LayoutInflater.from( this ).inflate(R.layout.mypinner_dropdown, null );
|
34 |
listView = (ListView) layout.findViewById(R.id.listView);
|
36 |
listView.setAdapter(adapter);
|
38 |
popupWindow = new PopupWindow(v);
|
40 |
popupWindow.setWidth(spinnerlayout.getWidth());
|
42 |
popupWindow.setHeight(LayoutParams.WRAP_CONTENT);
|
43 |
// 设置一个透明的背景,不然无法实现点击弹框外,弹框消失
|
44 |
popupWindow.setBackgroundDrawable( new BitmapDrawable());
|
46 |
popupWindow.setOutsideTouchable( true );
|
48 |
popupWindow.setFocusable( true );
|
50 |
popupWindow.setContentView(layout);
|
51 |
// 设置弹框出现的位置,在v的正下方横轴偏移textview的宽度,为了对齐~纵轴不偏移
|
52 |
popupWindow.showAsDropDown(v, -textView.getWidth(), 0 );
|
54 |
listView.setOnItemClickListener( new OnItemClickListener() {
|
57 |
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
|
58 |
// TODO Auto-generated method stub
|
59 |
textView.setText(list.get(arg2)); // 设置所选的item作为下拉框的标题
|
61 |
popupWindow.dismiss();
|
spinner用法:
this.bank_name = (Spinner) super.findViewById(R.id.spinnerCityStatic);
this.bank_name.setOnItemSelectedListener(new OnItemSelectedListenerImpl());
// 下拉框选择事件
private class OnItemSelectedListenerImpl implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String city = parent.getItemAtPosition(position).toString();
Toast.makeText(BangBankActivity.this, "选择的城市是:" + city,
Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}