Popupwindow 的简单实用案例(显示在控件下方)
发布时间 - 2026-01-11 00:39:43 点击率:次第一步:

private PopupWindow mPopupWindow;
第二步:写一个popupwindow的布局文件XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#669E9E9E">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#E4E4E4"
>
<TextView
android:id="@+id/popupwindow_Jan"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="一月份"
android:gravity="center"
/>
<TextView
android:id="@+id/popupwindow_Feb"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="二月份"
android:gravity="center"
/>
<TextView
android:id="@+id/popupwindow_Mar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="三月份"
android:gravity="center"
/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
第三步:在Activity写代码
public void onClick(View v) {
switch (v.getId()) {
case R.id.home_travel_modes_yuefen_textview:
showPopupWindow(v);
break;
case R.id.popupwindow_Jan:
showToastMsg("一月份");
break;
case R.id.popupwindow_Feb:
showToastMsg("二月份");
break;
default:
break;
}
public void showPopupWindow(View v){
View contentView = LayoutInflater.from(HomeTravelModesActivity.this).inflate(R.layout.home_popuplayout, null);
TextView JanText = (TextView)contentView.findViewById(R.id.popupwindow_Jan);
TextView FebText = (TextView)contentView.findViewById(R.id.popupwindow_Feb);
TextView MarText = (TextView)contentView.findViewById(R.id.popupwindow_Mar);
JanText.setOnClickListener(this);
FebText.setOnClickListener(this);
MarText.setOnClickListener(this);
final PopupWindow popupWindow = new PopupWindow(contentView,
LinearLayout.LayoutParams.MATCH_PARENT, 300, true);
popupWindow.setTouchable(true);
// popupWindow.setTouchInterceptor(new View.OnTouchListener() {
//
// @Override
// public boolean onTouch(View v, MotionEvent event) {
//
// Log.i("mengdd", "onTouch : ");
//
// return false;
// // 这里如果返回true的话,touch事件将被拦截
// // 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss
// }
// });
// 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
// 我觉得这里是API的一个bug
popupWindow.setBackgroundDrawable(getResources().getDrawable(
R.mipmap.ic_launcher));
// 设置好参数之后再show
popupWindow.showAsDropDown(v);
}
注:
若在Activity的onCreate()方法中直接写弹出PopupWindow()方法报错,因为Activity没有完全启动是不能弹出PopupWindow的,那我们只需要在Activity完全启动后在弹出PopupWindow就行了。
重写一下onWindowFocusChanged()方法:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
//弹出PopupWindow的具体代码
}
以上这篇Popupwindow 的简单实用案例(显示在控件下方)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# popupwindow
# 控件下方
# UpdateLayeredWindow实现任意异形窗口使用详解
# C#在Windows窗体控件实现内容拖放(DragDrop)功能
# WPF中引入WindowsForms控件的方法
# windows下IE的Flash控件卸载工具提供下载
# 获得.net控件的windows句柄的方法
# Winform 控件优化LayeredWindow无锯齿圆角窗体
# 弹出
# 给大家
# 我觉得
# 只需
# 要在
# 希望能
# 将被
# 重写
# 这篇
# 不被
# 报错
# 第二步
# 小编
# 第三步
# 大家多多
# 就行了
# 在弹出
# wrap_content
# E9E9E
# RelativeLayout
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在云指建站中生成FTP站点?
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
浅谈Javascript中的Label语句
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
香港服务器如何优化才能显著提升网站加载速度?
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
如何用AWS免费套餐快速搭建高效网站?
如何在建站之星绑定自定义域名?
php json中文编码为null的解决办法
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
如何有效防御Web建站篡改攻击?
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
如何快速搭建高效可靠的建站解决方案?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
网站优化排名时,需要考虑哪些问题呢?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Laravel如何实现事件和监听器?(Event & Listener实战)
微信小程序 HTTPS报错整理常见问题及解决方案
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
LinuxCD持续部署教程_自动发布与回滚机制
实例解析angularjs的filter过滤器
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
Linux安全能力提升路径_长期防护思维说明【指导】
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
Laravel怎么清理缓存_Laravel optimize clear命令详解
Linux后台任务运行方法_nohup与&使用技巧【技巧】
5种Android数据存储方式汇总
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
如何登录建站主机?访问步骤全解析
如何用景安虚拟主机手机版绑定域名建站?
phpredis提高消息队列的实时性方法(推荐)
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
详解Android图表 MPAndroidChart折线图
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel如何发送系统通知?(Notification渠道示例)
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
用yum安装MySQLdb模块的步骤方法
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
在线制作视频网站免费,都有哪些好的动漫网站?

