您的位置:首页 > 移动开发 > Android开发

Android PopupWindow 弹框布局要显示在某个空间下面位置

2017-08-01 16:29 513 查看
说明:

弹框布局要显示在某个空间下面需求。

代码:

使用PopupWindow。

1、PopupWindow初始化

private PopupWindow popupWindow;

//初始化搜索popup (可以启动初始化)
private void initSearchPopupWindow() {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View contentview = inflater.inflate(R.layout.popup_search_varieties_select, null);//自己的弹框布局
final EditText et_search = (EditText) contentview.findViewById(R.id.et_search);//布局中的编辑框
TextView tv_search = (TextView) contentview.findViewById(R.id.tv_search);//布局中的搜索按钮
contentview.setFocusable(true); // 这个很重要
contentview.setFocusableInTouchMode(true);
popupWindow = new PopupWindow(contentview, RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(false);
contentview.setOnKeyListener(new View.OnKeyListener() {//监听系统返回键
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
popupWindow.dismiss();

return true;
}
return false;
}
});
}


2、点击某个空间,启用PopupWindow,制定其显示位置

iv_search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.showAsDropDown(rl_header);//PopupWindow显示在rl_header空间下面
}
});


其它说明:

显示[b]PopupWindow:[/b]

showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移

showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移

showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移

和dialog对比,主要用在特殊的使用,比如:显示在某个空间下面!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: