Android 之PopupWindow弹出下拉列表

来源:互联网 发布:mac excel好用吗 编辑:程序博客网 时间:2024/05/17 08:27
 1. 首先看看main.xml布局:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#22000000"     >    <RelativeLayout         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="30dp"        android:layout_centerHorizontal="true"        >         <EditText              android:id="@+id/et_text"            android:layout_width="150dp"            android:layout_height="40dp"            android:singleLine="true"            android:paddingRight="30dp"        />         <ImageView              android:id="@+id/iv_select"             android:layout_alignRight="@+id/et_text"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:background="@drawable/select"             android:layout_centerVertical="true"             android:layout_marginRight="5dp"             android:layout_marginTop="35dp"             />    </RelativeLayout></RelativeLayout>
  1. 看看Activity怎么实现的吧:

public class MainActivity extends Activity implements OnClickListener{

private EditText et_text;private ImageView iv_select;private TextView tv_number;private ImageView iv_delete;private MyAdapter adapter;private List<String> list=new ArrayList<String>();private android.widget.ListView listView;//默认为像素值pxprivate int pwHeight=300;private PopupWindow window; @Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    requestWindowFeature(Window.FEATURE_NO_TITLE);    setContentView(R.layout.activity_main);    et_text = (EditText) findViewById(R.id.et_text);    iv_select = (ImageView) findViewById(R.id.iv_select);    initListener();    initData();}/** * 初始化数据 */private void initData() {    for (int i = 0; i <15; i++) {        list.add(90000+i+"");    }    ListView();}//创建ListViewprivate void ListView(){    listView = new android.widget.ListView(this);    //隐藏滚动条    listView.setVerticalScrollBarEnabled(false);    adapter=new MyAdapter();    listView.setAdapter(adapter);    //设置listview的点击事件    listView.setOnItemClickListener(new OnItemClickListener() {        @Override        public void onItemClick(AdapterView<?> parent, View view, int position,                long id) {            et_text.setText(list.get(position));            window.dismiss();        }    });}class MyAdapter extends BaseAdapter{    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(final int position, View convertView, ViewGroup parent) {        final View view=View.inflate(MainActivity.this,R.layout.adapter,null);        tv_number = (TextView) view.findViewById(R.id.tv_number);        iv_delete = (ImageView) view.findViewById(R.id.iv_delete);        tv_number.setText(list.get(position));        iv_delete.setOnClickListener(new OnClickListener() {            //删除事件            @Override            public void onClick(View v) {                list.remove(position);                //更新adapter                notifyDataSetChanged();                int height=view.getHeight()*list.size();                if(height>pwHeight){                    height=pwHeight;                }else{                    height=view.getHeight()*list.size();                }                window.update(et_text.getWidth(), height);                if(list.size()==0){                    window.dismiss();                }            }        });        return view;    }}/** * 初始化事件 */private void initListener() {    iv_select.setOnClickListener(this);}@Overridepublic void onClick(View v) {    switch (v.getId()) {    case R.id.iv_select:        showNumList();        break;    default:        break;    }}/** * 将ListView的数据显示到列表中 * 第一个参数:是listView * 第二个参数:PopupWindow的宽度,和EditText的宽度一致 * 第三个参数:设置固定的高度 */private void showNumList() {    if(window==null){        //创建PopupWindow        window = new PopupWindow(listView,et_text.getWidth(), pwHeight);    }    window.setFocusable(true);    //设置背景图片    window.setBackgroundDrawable(new BitmapDrawable());    //设置外部点击消失    window.setOutsideTouchable(true);    window.showAsDropDown(et_text);}

}

看看效果图:
这里写图片描述

猛戳这里:eclipse点击下载

0 0
原创粉丝点击