private void popAwindow(final EditText parent, List<CarNo> list) {
if (popview == null) {
LayoutInflater lay = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = lay.inflate(R.layout.item_pop, null);
lv_item = (ListView) v.findViewById(R.id.item_lv);
lv_item.setAdapter(popAdapter);
popAdapter.setData(list);
popAdapter.notifyDataSetChanged();
lv_item.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
parent.setText(data.get(arg2).getPlateNo());
popview.dismiss();
}
});
popview = new PopupWindow(v, et_carno.getWidth(),
LayoutParams.WRAP_CONTENT);
}
popview.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
popview.setFocusable(true);
popview.setOutsideTouchable(true);
popview.setBackgroundDrawable(new ColorDrawable());
popview.update();
popview.showAsDropDown(parent, 2, 2);
}
一个简单使用popupwindow的方法,其中setFocusable,setOutsideTouchable,setbackgroundDrawable是必须的,且顺序不要颠倒,功能为点击外面或者返回键可以取消popupwindow。popview.setSoftInputMode适用于一些有虚拟键的手机,场景为一个popupwindow在某控件下边展示,并直接显示到底,类似华为有虚拟按键的手机最后几项会被虚拟按键挡住,设置此方法会使popupwindow不被遮挡。