PopupWindow 的使用及注意事项
2016-11-25 16:53
183 查看
在项目里面很多时候都会有弹窗显示列表数据这样的需求,很多人都用Spanner,其实效果不佳,更多的是自定义布局显示,通常使用PopupWindow代替,直接上代码:
final View view = getActivity().getLayoutInflater().inflate(R.layout.fragment_search_car_popu, null);
mPopupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT, true);
mPopupWindow.setTouchable(true);
mPopupWindow.setFocusable(true);
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
这样就创建完成了,独立出一个方法来显示:
//显示popup
private void showPoupwindow() {
if (mPopupWindow.isShowing()) {
mPopupWindow.dismiss();
} else {
// 以下拉列表方式显示
mPopupWindow.showAsDropDown(llSearch, 0, 0);
}
}PopupWindow显示的方式有两种,根据需求而定,显示指定位置showAtLocation(),以下拉列表方式显示showAsDropDown.
注意:
mPopupWindow.setTouchable(true);
mPopupWindow.setFocusable(true);
mPopupWindow.setOutsideTouchable(true);
这三个方法不能缺。
如果你的PopupWindow需要paddingBottom多少dp,这时候点击距离底部的空白处PopupWindow不能隐藏掉,接下来你需要这样做,
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int height = view.findViewById(R.id.view).getBottom();
int y = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_UP) {
if (y < height) {
mPopupWindow.dismiss();
}
}
return true;
}
});
需要拿到距离底部的位置和点击的paddingBottom空白处,判断Y轴的距离,才能隐藏掉。
final View view = getActivity().getLayoutInflater().inflate(R.layout.fragment_search_car_popu, null);
mPopupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT, true);
mPopupWindow.setTouchable(true);
mPopupWindow.setFocusable(true);
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
这样就创建完成了,独立出一个方法来显示:
//显示popup
private void showPoupwindow() {
if (mPopupWindow.isShowing()) {
mPopupWindow.dismiss();
} else {
// 以下拉列表方式显示
mPopupWindow.showAsDropDown(llSearch, 0, 0);
}
}PopupWindow显示的方式有两种,根据需求而定,显示指定位置showAtLocation(),以下拉列表方式显示showAsDropDown.
注意:
mPopupWindow.setTouchable(true);
mPopupWindow.setFocusable(true);
mPopupWindow.setOutsideTouchable(true);
这三个方法不能缺。
如果你的PopupWindow需要paddingBottom多少dp,这时候点击距离底部的空白处PopupWindow不能隐藏掉,接下来你需要这样做,
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int height = view.findViewById(R.id.view).getBottom();
int y = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_UP) {
if (y < height) {
mPopupWindow.dismiss();
}
}
return true;
}
});
需要拿到距离底部的位置和点击的paddingBottom空白处,判断Y轴的距离,才能隐藏掉。
相关文章推荐
- Firefox window.close()的使用注意事项
- android popWindow使用注意事项
- Firefox window.close()的使用注意事项
- Firefox window.close()的使用注意事项
- appcan appcan.window.evaluateScript(name,scriptContent,type) 方法使用注意事项
- popwindow分析以及使用注意事项(二)
- 笔记本使用前注意事项
- 使用UltraWebGrid控件分页功能注意事项
- .net下导致Session失效的一种情况:js教本中使用window.open和window.showModalDialog时需要注意
- (To Me Just)c#中的WebBrowser类的使用注意事项!
- C++构造函数中使用new时应注意的事项!
- PC端工具箱使用注意事项
- C#使用CDO发送邮件 注意事项!!!
- response.sendRedirect()使用注意事项
- 在Linux/Unix中使用错误保留符需注意的事项(2006-02-17)
- 在asp.net 2.0中使用CuteEditor 5.0的一个注意事项
- 在oracle中字段类型LONG的使用注意事项
- Rhapsody 5.2在VS.NET 2003中使用的注意事项
- struts在页面中使用form标记的注意事项
- 使用Matcher.appendReplacement的注意事项