文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android 自定义弹出菜单和对话框功能实例代码

2023-05-30 21:59

关注

Android 开发当中,可能会存在许多自定义布局的需求,比如自定义弹出菜单(popupWindow),以及自定义对话框(Dialog)。

话不多说,直接上图片。

Android 自定义弹出菜单和对话框功能实例代码 


Android 自定义弹出菜单和对话框功能实例代码

先讲第一种,自定义PopUpWindow

1.popupWindow

protected void showPopWindow(View view, final int pos){  WindowManager wm= (WindowManager) myContext.getSystemService(Context.WINDOW_SERVICE);  int width=wm.getDefaultDisplay().getWidth();  LayoutInflater layoutInflater=(LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  View popView=layoutInflater.inflate(R.layout.layout_shoucang_popupwindow,null);  //加载弹出菜单的布局文件  final ListView lvpop= (ListView) popView.findViewById(R.id.lvShouCangPop);  List<String> strData=new ArrayList<>();  strData.add("删除");  strData.add("分享");  popView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);  popupWindow=new PopupWindow(popView,3*width/10, ViewGroup.LayoutParams.WRAP_CONTENT); //设置popupWindow 的大小  lvpop.setAdapter(new AdapterShouCangDeletePop(myContext,strData));  lvpop.setOnItemClickListener(new AdapterView.OnItemClickListener() {   @Override   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {    if(position==0){     //点击删除按钮的逻辑//     ToastUtil.toastButtom(myContext,"点击删除按钮");//     datas.remove(pos); //remove掉这行数据     toActivityPos=pos;//     notifyDataSetChanged();     sendDeleteBoardCast(); //发送一条广播     popupWindow.dismiss();    }else if(position ==1){     //点击分享的逻辑     String title=datas.get(position).ucDesc;     String photoUrl=datas.get(position).ucIcon;     String contentUrl=datas.get(position).ucUrl;     DialogShouCangShare dialogShouCangShare=new DialogShouCangShare(myContext,title,photoUrl,contentUrl); //弹出分享对话框     dialogShouCangShare.show();     popupWindow.dismiss();    }   }  });  int[] location=new int[2];  view.getLocationOnScreen(location);  popupWindow.setFocusable(true);  popupWindow.setBackgroundDrawable(new BitmapDrawable());//最好加上这一句,因为他可以取消显示这个弹出菜单,不加的话,弹出菜单很难消失  //下方:popupWindow.showAsDropDown(v);  //popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]+v.getWidth(), location[1]); 显示在右边  //popupWindow显示在左边  popupWindow.showAtLocation(view, Gravity.NO_GRAVITY    , location[0]-popupWindow.getWidth(),location[1]); //这里的view是传进来的view,比如点击事件中的view,就把它传进来,popupwindow的位置可以自行调整 }

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯