先看效果图,免得浪费大家时间,看是不是想要的效果 。

直接上代码 ,核心方法。

  1. private void showPopupWindow(View parent) {
  2. if (popupWindow == null) {
  3. LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  4. view = layoutInflater.inflate(R.layout.group_list, null);
  5. lv_group = (ListView) view.findViewById(R.id.lvGroup);
  6. Collections.reverse(groups);
  7. GroupAdapter groupAdapter = new GroupAdapter(this, groups);
  8. lv_group.setAdapter(groupAdapter);
  9. popupWindow = new PopupWindow(view, 200, 220);
  10. }
  11. popupWindow.setFocusable(true);
  12. popupWindow.setOutsideTouchable(true);
  13. // 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
  14. popupWindow.setBackgroundDrawable(new BitmapDrawable());
  15. WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
  16. int xPos = -popupWindow.getWidth() / 2
  17. + getCustomTitle().getCenter().getWidth() / 2;
  18. popupWindow.showAsDropDown(parent, xPos, 4);
  19. lv_group.setOnItemClickListener(new OnItemClickListener() {
  20. @Override
  21. public void onItemClick(AdapterView<?> adapterView, View view,
  22. int position, long id) {
  23. loadNew(((StringItem)(groups.get(position))).getId());
  24. if (popupWindow != null)
  25. popupWindow.dismiss();
  26. }
  27. });
  28. }

这篇是转载的 。

popupWindow 在控件的各个方向上的显示(上、下、左、右),主要用到popupWindow 的showAtLocation()方法:

在控件的上方:

  1. private void showPopUp(View v) {
  2. LinearLayout layout = new LinearLayout(this);
  3. layout.setBackgroundColor(Color.GRAY);
  4. TextView tv = new TextView(this);
  5. tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  6. tv.setText("I'm a pop -----------------------------!");
  7. tv.setTextColor(Color.WHITE);
  8. layout.addView(tv);
  9. popupWindow = new PopupWindow(layout,120,120);
  10. popupWindow.setFocusable(true);
  11. popupWindow.setOutsideTouchable(true);
  12. popupWindow.setBackgroundDrawable(new BitmapDrawable());
  13. int[] location = new int[2];
  14. v.getLocationOnScreen(location);
  15. popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0], location[1]-popupWindow.getHeight());
  16. }

在控件的其他方向上显示只需修改最后一行代码即可,如:

下方:popupWindow.showAsDropDown(v);

左边:

  1. popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]-popupWindow.getWidth(), location[1]);

右边:

  1. popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]+v.getWidth(), location[1]);

转载于:https://www.cnblogs.com/qwer520/p/4911243.html

android学习——popupWindow 在指定位置上的显示相关推荐

  1. 计算Dataframe指定位置上的分位数:df.quantile()

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] 计算Dataframe指定位置上的分位数 df.quantile() 选择题 关于以下代码说 ...

  2. unity 在图片的指定位置上添加按钮_Unity-利用免费资源快捷实现第三人称角色控制...

    by 临界荷 本例目标:学习使用unity商店免费资源中的模型和代码,轻松快捷实现第三人称视角玩家多种行为的设定.举一反三,可方便灵活地添加到自己的3D模型(绑定了骨骼和动作的人物模型,不支持动物模型 ...

  3. android gridview滚动条位置,Android GridView滚动到指定位置

    当一个列表项目很多,并且每个项目可以进入到其它Activity或者Fragment时,保存之前列表的位置是一个比较不错的功能, 今天研究了一下怎么保存浏览位置,发现GridView和它的父类中有4个相 ...

  4. Android 在图片的指定位置添加标记

    这些天,项目里加了一个功能效果,场景是: 假如有一个家居图片,图片里,有各样的家居用品: 桌子,毛巾,花瓶等等,需要在指定的商品处添加标记,方便用户直接看到商品,点击该标记,可以进入到商品详情页 .实 ...

  5. android 动画 图片从指定位置飞到指定位置

    private ViewGroup anim_mask_layout;//动画层 private ImageView sendFeather;// 这是在界面上跑的小图片 </pre>&l ...

  6. Android RecyclerView 滑动到指定位置 RecyclerView 滑动到顶部

    志在巅峰的攀登者,不会陶醉在沿途的某个脚印之中,在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的 ...

  7. Android学习之PhotoView在Eclipse上的使用

    一.今天,来介绍一个开源框架PhotoView,使用十分方便快捷,此框架可以实现以下这些功能: (1).android图片的浏览功能. (2).图片放大缩小功能,可以使用PhotoView双击放大,双 ...

  8. android学习笔记---32_文件断点上传器,解决多用户并发,以及自定义协议,注意协议中的漏洞

    32_文件断点上传器 --------------------------- 1.当文件很大的时候就无法通过http协议进行上传了,因为get,post的安全原因,很多服 务器会   禁止这些协议,而 ...

  9. Android学习-使用WebView在app上显示网页

    通过Intent调用系统浏览器 Uri uri = Uri.parse(url);//url为你要链接的地址 Intent intent = new Intent(Intent.ACTION_VIEW ...

最新文章

  1. pycharm导包错误
  2. Java项目:清新论坛系统(java+SSM+mysql+maven+tomcat)
  3. BZOJ 4025 二分图
  4. Bootstrap:关于bootstrap单页面中多Modal的问题
  5. python3.4.4 配置opencv3.1 解决pip版本不够的问题
  6. 寻找数组中的第二大数
  7. ASP.NET Core + Angular 2 Template for Visual Studio
  8. 【每日一题】7月3日精讲—毒瘤xor
  9. Powershell: powershell 获取本机IP地址
  10. debian stretch + kernel 4.4 固件发布(支持硬件加速),可安装kodi
  11. BZOJ2434: [Noi2011]阿狸的打字机
  12. [Xcelsius]BI展现工具之Xcelsius
  13. 操作系统形式化验证实践教程(2) - HOL列表与集合
  14. 基于卷积神经网络和小波变换的视频监控中的火灾探测
  15. [bzoj1022] [SHOI2008]小约翰的游戏John
  16. 启动车子温车_冷车和热车难打火可以不修,但温车不打火必须得修
  17. 开设生物医学工程的高校(按区域划分)
  18. 计算机网络的五层模型和七层模型
  19. uniGUI获取设备信息
  20. mysql查询当年年份

热门文章

  1. 递归遍历文件及子文件夹下的文件(该代码是复制过来修改过的,如果有侵作者权的话,请作者联系我,立即删除)...
  2. SQL SERVER数据库开发之触发器的应用
  3. jsp连接Sql Server 2000数据库
  4. ★LeetCode(104)——二叉树的最大深度(JavaScript)
  5. mysql自增主键返回---创建成功后返回用户的ID
  6. Vue报错:3 errors and 0 warnings potentially fixable with the `--fix` option.
  7. npm notice created a lockfile as package-lock.json. You should commit this file.
  8. 为什么现在的年轻人越来越不愿意结婚、生子了?
  9. 买了小区一楼的感受是怎样的?
  10. 为什么有科学家怀疑太阳系是被设计出来的