项目中那些事|初探 弹出框 PopupWindows

自定义弹出框(改进后的windows alert) NULL 博文链接:https://hugang357.iteye.com/blog/709539 立即下载



Android的对话框有两种:PopupWindow和AlertDialog。他们都可以自定义view,而不同相对于位置固定的AlertDialog,PopupWindow的位置可以随意。且AlertDialog是非阻塞线程的,而PopupWindow是阻塞线程的。个人认为PopupWindow使用会更加灵活方便。废话就不多说了,下面具体根据代码来讲解一下:

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.PopupWindow;
/**
 * 
 * @description
 * 			TODO
 * @author zs
 * @version 1.0
 */
public class QuetsDetailView extends PopupWindow{
	private static final String TAG = "QuetsDetailView";
	private Context mContext;
	private LayoutInflater inflater;
	private View showView;//依附控件
	private View view;
	public QuetsDetailView(Context context,View v){
		LogUtil.d(TAG, "【初始化...】");
		this.mContext = context;
		this.showView = v;
		inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		init();
	}
	/**
	 * 初始化
	 */
	private void init(){
		view = inflater.inflate(R.layout.popup_question_detail_layout, null);
		this.update();
//		this.setWidth(LinearLayout.LayoutParams.WRAP_CONTENT);
//		this.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
		/**
		 * 这里要指定具体值,要不在下面指定控件位置之上时无效,具体原因不知道,
		   请知道的回复我,谢谢
		 *        
		 */
		this.setWidth(750);
		this.setHeight(500);
		//自定义布局
		this.setContentView(view);
		this.setFocusable(true);
		this.setTouchable(true);
		/**
		 * 使点击 PopupWindow 之外,能使之消失。
		 * 这里要注意的是:1.setTouchable(true) 2.this.setBackgroundDrawable(cd) 
		   是必须的,反之,无效果
		 * 
		 */
		this.setOutsideTouchable(true);
		ColorDrawable cd = new ColorDrawable(Color.TRANSPARENT);
		this.setBackgroundDrawable(cd);
	}
	/**
	 * 在指定控件之上显示
	  
	 * 下方显示 :this.showAsDropDown(view);
	 
	 * 左方方显示 :this.showAtLocation(view, Gravity.NO_GRAVITY, 
	 				    location[0]-popupWindow.getWidth(), location[1]);
	 
	 * 右方方显示 :this.showAtLocation(view, Gravity.NO_GRAVITY, 
	 			            location[0]+v.getWidth(), location[1]);
	 */
	public void showWindow(){
		if(!isShowing()){
			int[] location = new int[2];
			showView.getLocationOnScreen(location);
			int offsetY = location[1] - this.getHeight();
			int offsetX = location[0];
			this.showAtLocation(showView, Gravity.NO_GRAVITY, offsetX, offsetY);
		}
	}
	/**
	 * 隐藏popup
	 */
	public void cancleWindow(){
		if(isShowing()){
			this.dismiss();
		}
	}
}


关于点击popupwindow以外区域 popupwindow自动消失问题

android自定义menu,PopUpWindow弹出菜单


从零构建2.4G无线通信系统:MSPM0G3507与NRF24L01的深度协同设计 本文详细介绍了基于MSPM0G3507微控制器与NRF24L01射频模块构建2.4G无线通信系统的深度协同设计方案。内容涵盖系统架构、SPI通信优化、功耗管理、抗干扰机制及中断/DMA高效利用,为工业物联网应用提供高可靠、低功耗的无线传输解决方案。 阅读详情

相关推荐

旋转因子量化仿真

在单bit接收机中,通过量化FFT核函数来简化计算,将复数坐标中旋转因子单位圆上的点近似到正方形四个边上,就能够用累加实现复数乘法,从而避免使用DSP乘法器。通过仿真查看不同阶的核函数简化效果。

CyberInversion的博客 3103

Android 使用Jetpack Lifecycle 创建可感知页面生命周期的Dialog、Banner等

问题背景: 场景是这样的:activity A 中有一个弹框,弹框里面有个列表,点击弹框中列表的 item 进入 activity B,再从 activity B 返回 到 activity A 时,列表需要刷新(其实,每次弹框重新可见时都需刷新,如跳转、切后台、屏幕解锁等)。 总的来说,弹框需要感知 activity A 的 onResume()生命周期方法。那么,实现这种需求,可以有如下方法:...

hust_twj的专栏 3424

头歌平台 操作系统课堂练习2.3:系统调用

使用 gdb 调试内核,跟踪到 main 函数入口的方法与之前实训一样。系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?本关卡使用版本 1 内核进行分析,版本 1 内核文件存放在。为了完成本关任务,你需要:跟踪系统调用的发生。此时,系统调用号存放在寄存器 eax 中。

lazbuyaotoutu的博客 2万+

PopupWindowANDWindowManager 浮动窗口和窗口管理

一、弹出窗口的使用     1.创建对象    new PopupWindow(view, width, hight, true);     2.设置pop是否能获取焦点,点击空白区域是否消失等                      popupWindow.setFocusable(true);               popupWindow.setOutsideTouch

紫风幻雪的博客 1389

在 Linux 虚拟机中手动安装 VMware Tools

对于 Linux 虚拟机,您可以从命令行手动安装 VMware Tools。对于 Linux 的较高发行版,请使用集成的 open-vm-tools 版本。 前提条件 有关 open-vm-tools 的操作系统兼容性的详细信息,请参见《VMware 兼容性指南》,网址为VMware Compatibility Guide - System Search。 开启虚拟机。 确认客户机操作系统正在运行。 因为 VMware Tools 安装程序是使用 Perl 编写的,请确认已在客户机操作系统中安..

m0_62526815的博客 1755

调用D3D11硬解码和渲染VideoProcessor版本

在https://blog.youkuaiyun.com/robothn/article/details/78781321一文中使用shader来显示FFMPEG硬解码后的YUV420P,本文调用D3D11的videoprocessor来进行图像空间变换和尺寸变换,取得了较好的效果。 1.初始化D3D11设备、videodevice等数据结构 FFMPEG调用D3D11硬解码,获取其对应的device,videodevice。。。 FFMPEG使用av_hwdevice_find_type_by_name调用D3d11

zlyadvocate的博客 9285

PopupWindow 使用详解

极力推荐文章:欢迎收藏Android 干货分享本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:PopupWindow 继承关系...

程序员Android 327

FastAPI 极简教程(偏实战,一篇搞定)

本文是一篇FastAPI实战教程,通过最少的概念讲解快速掌握FastAPI的核心功能。文章首先介绍FastAPI是基于Starlette和Pydantic的高性能Python API框架,具有自动生成文档、类型驱动校验、异步支持和依赖注入等优势。教程从安装环境开始,演示了如何创建最小项目并编写第一个"Hello World"接口。接着详细讲解了路由参数处理(Path/Query/Body)、Pydantic数据模型校验、响应模型控制、状态码设置等核心功能。在高级功能方面,重点介绍了错误处

AI天才研究院 812

Selenium专题—弹出框处理

页面中遇到的弹出框,我一般把它分为两种方式处理: 1、alert弹出框 2、非alert弹框 给出的代码中基本能处理所有页面的各种弹框。 1、alert弹框 这种弹出框处理应该毫无难度,网上也有很多介绍的,这边提供一个方法,见代码 程序清单 //处理潜在的1个alert(javascript弹出框) public boolean dealPotentialAlert(WebD

qew110123的专栏 6984

YOLO26科研优化:多损失函数(EIoU、SIoU等)融合,让边界框回归精度再上台阶

将原有损失函数替换为我们编写的MultiLoss。例如,在bbox_loss。

LXY_LOVE36的博客 172

一套适合 ABAP 初级和中级开发人员,从入门到提高的 ABAP 学习教程

曾几何时,ABAP 就是 SAP 的代名词。ABAP 这门编程语言造就了 SAP 名噪一时的 R/3 产品,同时也是如今 SAP 旗舰级产品,SAP S/4HANA 底层的实现语言。 ABAP 不仅代表着 SAP 这家公司在企业级管理软件市场辉煌的过去,ABAP 自身也在不断地进化着。SAP 不仅在本地部署(On-Premise)领域继续保持着自己绝对的统治地位,而且在云应用领域(Software-as-a-Service, 简称 SaaS), 也推出了自己的解决方案,比如 SAP S/4HANA Clo

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5919

popupwindows

使用PopupWindow可实现弹出窗口效果,,其实和AlertDialog一样,也是一种对话框,两者也经常混用,但是也各有特点。下面就看看使用方法。 首先初始化一个PopupWindow,指定窗口大小参数。 PopupWindow mPop = new PopupWindow(getLayoutInflater().inflate(R.layout.window, null), L

laiqun_ai的专栏 932

SAP-ABAP:SAP创建CDS视图(SQL语句创建)实例详解

通过Eclipse和ADT创建CDS视图是SAP开发中的一项重要技能。CDS视图不仅简化了数据建模,还提供了高性能和灵活性。掌握CDS视图的开发和使用,可以帮助你更好地支持SAP S/4HANA和Fiori应用的开发。

baidu_35680696的博客 1823

Android弹出框效果——popupwindow

什么是popupwindows   PopupWindow是一个有弹出框的效果的类,可以使用任意布局的View作为其内容,而且这个弹出框是悬浮在当前activity之上的。但是它跟AlertDialog还是有区别的。AlertDialog弹出位置是固定的,而popupwindow却可以随意显示,从灵活性上来讲,我更喜欢popupwindows。 popupwindows的实现 不多说,先

qq_19401603的博客 361

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android PopupWindows

今天了解到PopupWindows这个布局,PopupWindow这个类用来实现一个弹出框,能够使用随意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。 以下是一个实例 xml文件 <LinearLayout         android:id="@+id/ll_popup"         android:layout_width="...

weixin_34419326的博客 157

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android中的PopupWindows用法

/** * 弹出框方法 * @param resId */ private void initPopupWindow(View view){ //view窗体的显示控件 mPopupWindow = new PopupWindow(view, 200,300); // mPopupWindow.setBack...

tansitongba 153

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android PopupWindow的使用和分析

PopupWindow使用        PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。   PopupWindow使用Demo   这个类的使用,不再过多解释,直接上代码吧。   比如弹出框的布局: xml version="1.0" encoding="utf-8"?> LinearL

IT技术的专栏 970

一个界面显示两个PupupWindows(一个是消息框的形式弹出,另一个是底部弹窗形式弹出)

首先,效果图展示: 实现以消息形式弹出步骤: 步骤一:使用一个类继承popupwindows public class SelectPicPopupWindow extends PopupWindow { private Button btn_1, btn_2, btn_3; private View mMenuView; public static Ed

K2514091675的博客 1217

自定义PopupWindow弹出框(带有动画)

使用PopupWindow来实现弹出框,并且带有动画效果 首先自定义PopupWindow 1 public class LostPopupWindow extends PopupWindow { 2 public Lost lost; 3 public void onLost(Lost lost){ 4 this.lost = lost; ...

weixin_30360497的博客 204

PopupWindow显示在某个控件上方

一、自定义PopupWindow public class PopupWindowView extends PopupWindow{ private int popupWidth; private int popupHeight; private ListView listView; private View parentView; public Po

ABang的博客 2万+

PopupWindow的简单用法

首先创建弹出框的布局 layout_popupwindow <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:b

adojayfan的博客 402

PopupWindow使用

PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。 大佬的博客:https://www.jianshu.com/p/799dbb86f908 Activity: package com.example.qing.testuiproject; import android.support.v7.app.App...

天上掉下两毛钱 190

PopupWindow

PopuWindow初始化 // 先加载窗口的布局 View layout = getLayoutInflater().inflate(R.layout.popu_layout, null); layout.findViewById(R.id.menu_01).setOnClickListener(this);

gswdzh的博客 357

PopupWindow的使用

使用PopupWindow可实现弹出窗口效果

ProgrammerMonkey的专栏 503
上一篇: 项目中那些事|控件之TextView
下一篇: 项目中那些事|ListView中嵌套ListView问题
Admin_
博客等级 码龄16年 28粉丝 32原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值