可以用来显示数据:例如listView的数据
private int popupWindowHight = 300;
public void showListNumber() {
if (popup == null) {
popup = new PopupWindow(listview, et_text.getWidth(), popupWindowHight); //popupWindow要显示的view 和 popup 的宽度;
}
//要使listView获得焦点必走这。
popup.setFocusable(true); //要让其他的view能获得焦点。
popup.setBackgroundDrawable(new BitmapDrawable()); //设置一个空的背景图片。
popup.setOutsideTouchable(true);
popup.showAsDropDown(et_text, 0, 0); //向下显示 依附的view 偏移view坐标系的xy坐标。
}
PopupWindow 的高度随listview条目的变化而变化;
iv_delete.setOnClickListener(new OnClickListener() {
@Override // 当点击删除按钮时需要将数据删除掉。
public void onClick(View v) {
list.remove(position);
notifyDataSetChanged(); //注意Adapter的数据改变时,要加这个。以便显示。
/**
* 当listview的条目改变时,需要改变popupWindow的高度。
*/
int listviewHeight = view.getHeight()*list.size();
//三元表达式 判断。
popup.update(et_text.getWidth(), listviewHeight>popup.getHeight()?popup.getHeight():listviewHeight);
//要将下拉箭头隐藏掉。
if(list.size()==0){
popup.dismiss();
iv_select.setVisibility(View.GONE); //设置imageview隐藏消失掉。
}
}
});
下拉选择:
1.假如listview的item中有Button,ImageButton,CheckBox等会强制获取焦点的view
此时,listview的item无法获取焦点,从而无法被点击
解决方法:给item的根布局增加以下属性
android:descendantFocusability=”blocksDescendants”
设置之后,Button获取焦点,item中其他控件也可以获取焦点