文档章节

PopupWindow的使用

HWJ-杰杰
 HWJ-杰杰
发布于 2014/04/29 21:24
字数 600
阅读 171
收藏 1
点赞 0
评论 0

源码下载:

源码下载

运行效果:

按了返回后:

java代码:

package com.example.cest;

import android.app.Activity;
import android.graphics.drawable.PaintDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
	PopupWindow popupWindow,popupWindoweExit;
	Button bu_shi,bu_fou;
	TextView view1;
	TextView view2;
	Button button;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button=(Button) findViewById(R.id.bu);
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				popinit();
			}
		});
	}
	protected void popinit() {
		// TODO Auto-generated method stub
		LayoutInflater inflater = LayoutInflater.from(this);
		View pop_view = inflater.inflate(R.layout.bujv, null);
		view1=(TextView) pop_view.findViewById(R.id.tv1);
		view2=(TextView) pop_view.findViewById(R.id.tv2);
		                                      //设置下拉按钮父布局的高和宽
		popupWindow = new PopupWindow(pop_view,ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
		popupWindow.setFocusable(true);//没这行按钮下拉了,按手机返回会直接退出
//		popupWindow.setOutsideTouchable(true);
		popupWindow.setBackgroundDrawable(new PaintDrawable());//没这行按钮下拉了不会消失
		popupWindow.showAtLocation(pop_view, Gravity.BOTTOM, 0, 0);//PopupWindow显示的位置
		view1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "这是注册",Toast.LENGTH_LONG).show();
			}
		});
		view2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "这是登录",Toast.LENGTH_LONG).show();
			}
		});
	}
	/*按返回弹出是否退出画面
	 * 
	 * */
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub

		if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
			popExit();
		}
		return false;
	}
	/*用PopupWindow做的退出
	 * */
	private void popExit() {
		// TODO Auto-generated method stub
		LayoutInflater inflater = LayoutInflater.from(this);
		View pop_view = inflater.inflate(R.layout.exit, null);
		bu_shi=(Button) pop_view.findViewById(R.id.bu_exit_shi);
		bu_fou=(Button) pop_view.findViewById(R.id.bu_exit_fou);
		popupWindoweExit = new PopupWindow(pop_view,200,ViewGroup.LayoutParams.WRAP_CONTENT);
		popupWindoweExit.setFocusable(true);
		popupWindoweExit.setOutsideTouchable(true);
//		popupWindow.setBackgroundDrawable(new PaintDrawable());
		popupWindoweExit.showAtLocation(pop_view, Gravity.BOTTOM|Gravity.CENTER_VERTICAL, 0, 150);
		bu_shi.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				MainActivity.this.finish();
			}
		});
		bu_fou.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				popupWindoweExit.dismiss();
			}
		});
	}
}

点击按钮显示的布局文件bujv.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:orientation="vertical" >
    <TextView 
        android:id="@+id/tv1"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:gravity="center"
        android:background="@drawable/btn_style_one_disabled"
        android:textSize="20sp"
        android:text="注册"
        />
    <TextView 
        android:id="@+id/tv2"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:gravity="center"
        android:background="@drawable/btn_style_one_disabled"
        android:textSize="20sp"
        android:text="登录"
        />
</LinearLayout>

按返回按钮弹出退出的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:background="@drawable/bj_but_popwind"
    android:orientation="vertical" >
    <TextView 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:gravity="center"
        android:textSize="20sp"
        android:textColor="#000000"
        android:text="退出聊天室"
        />
    <TextView 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:gravity="center"
        android:textColor="#000000"
        android:text="退出后你将收不到信息,你确定退出?"
        />     
	<TableLayout 
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:stretchColumns="0,1"
	    >
	    <TableRow >
	 <Button 
	    android:id="@+id/bu_exit_shi"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:gravity="center"
	    android:text="是"
	    />
	<Button 
	    android:id="@+id/bu_exit_fou"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:gravity="center"
	    android:text="否"
	    />
	    </TableRow>
	</TableLayout>
</LinearLayout>


© 著作权归作者所有

共有 人打赏支持
HWJ-杰杰
粉丝 0
博文 13
码字总数 2164
作品 0
南京
程序员
Android 中 PopupWindow 在7.0后适配

这里主要记录一次踩坑的经历。 需求:如上图左侧效果,想在按钮的下方弹一个PopupWindow。嗯,很简单一个效果,然当适配7.0后发现这个PopupWindow显示异常,然后网上找到了下面这种方案。 7....

smart_dev ⋅ 05/17 ⋅ 0

GridView+PopupWindow自定义数字键盘

public class SimpleGridViewTest extends Activity { EditText editText; private PopupWindow popupWindow; private GridView mGridView; private View contentview; private List datas =......

wx5a18b5d1780d3 ⋅ 04/19 ⋅ 0

android 对绘制的文本添加动画

场景: 存在较多绘制内容的区域需要某些动画效果, 需要尽量少修改视图的绘制方法,做到动画与绘制分离。 看个简单例子: 我在一个视图上绘制了一行文字,先看一下绘制部分的代码: 现在需要...

飛飛萨 ⋅ 05/28 ⋅ 0

android Dialog和Popupwindow,不显示

测试的是华为荣耀平板,在BaseActivity中有个方法,在里面构造dialog或popupwindow,在子类activity中手动点击按钮调用该方法,每次都正常显示弹窗,但是在回调接口中调用基本就不显示,偶尔...

Gowcage ⋅ 06/11 ⋅ 0

传说中的WindowManager

作者:不洗碗工作室 - catango 版权归作者所有,转载请注明出处 通常情况下,我们使用的Dialog,Activity等需要显示到屏幕上面的内容都需要WindowManager来操作的,WindowManager是一个非常重要...

不洗碗工作室 ⋅ 06/03 ⋅ 0

安卓PopupWindow详解

PopupWindow是神们? A popup window that can be used to display an arbitrary view. The popup window is a floating container that appears on top of the current activity. 一个可以用......

大灰鸡 ⋅ 2017/12/02 ⋅ 0

关于使用PopupWindow

PopupWindow 可以创建类似于对话框风格的窗口,使用PopupWindow创建对话框只需两个步骤 1)调用PopupWindow构造器创建PopupWindow对象 2)调用PopupWindow的showAsDropDown(View v)将PopupWi...

cg19910712 ⋅ 2014/02/19 ⋅ 0

巧用PopupWindow

PopupWindow是一种简便的弹出界面,常用的场合是点击按钮之后,会在按钮下方弹出一个界面,界面是自定义的,与一般的对话框不同,PopupWindow弹出的初始位置默认是在显示PopupWindow控件的下...

Carbenson ⋅ 2015/11/05 ⋅ 0

Android PopupWindow的使用

下面是一个弹出带ListView和TextView的PopupWindow实例: 这是弹出框的布局文件: style中添加: drawable中添加dialogenter.xml和dialogexit.xml: 补充: 在用PopupWindow实现底部弹出菜单的...

SRain215 ⋅ 2015/11/24 ⋅ 1

使用 PopupWindow 的注意事项

预备知识 使用 PopupWindow 之前, 一定要知道 Android 是怎么响应旋转屏幕的. 如果不知道的话, 那就先去了解下这个知识点. >>> Google 关键词: Android Activity 重建 另外需要知道的就是Pop...

有初啊 ⋅ 2013/11/07 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 29分钟前 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 35分钟前 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 昨天 ⋅ 0

Confluence 6 重新获得站点备份文件

Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中。你需要自己访问你安装的 Confluence 服务器,并且从服务器上获得这个文件。 运行从 Confluence...

honeymose ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部