12 PopupWindow
PopupWindow创建方式
- PopupWindow pop = new PopupWindow()
- PopupWindow pop = new PopupWindow(上下文, 填充宽, 填充高);
PopupWindow pop = new PopupWindow()案例1:
java代码:
package com.fmy.popwindowdemo;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.PopupWindow;
import android.widget.LinearLayout.LayoutParams;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v) {
//获取布局填充器
LayoutInflater inflater = LayoutInflater.from(this);
//把布局填充一个view
View converView = inflater.inflate(R.layout.layout, null);
//创建一个pop
PopupWindow pop = new PopupWindow();
//吧view放入
pop.setContentView(converView);
//设置pop的宽
pop.setWidth(LayoutParams.MATCH_PARENT);
//设置pop的高
pop.setHeight(LayoutParams.MATCH_PARENT);
//找到一个view 为了设置pop弹出的位置
View tv = findViewById(R.id.tv);
//弹出到tv下方
pop.showAsDropDown(tv);
}
}
填充成view 的代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#ffff00"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你好" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="不好" />
</LinearLayout>
main布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.fmy.popwindowdemo.MainActivity" >
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/hello_world" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="嘿嘿" />
</RelativeLayout>
效果图
解释效果图:
pop.setWidth(LayoutParams.MATCH_PARENT);
//设置pop的高
pop.setHeight(LayoutParams.MATCH_PARENT);
pop.showAsDropDown(tv);
必须要在tv下方 由填充父元素所以导致生成上述界面
PopupWindow pop = new PopupWindow()案例2:
java代码
package com.fmy.popwindowdemo;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.PopupWindow;
import android.widget.LinearLayout.LayoutParams;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v) {
//获取布局填充器
LayoutInflater inflater = LayoutInflater.from(this);
//把布局填充一个view
View converView = inflater.inflate(R.layout.layout, null);
//创建一个pop
PopupWindow pop = new PopupWindow();
//吧view放入
pop.setContentView(converView);
//设置pop的宽
pop.setWidth(LayoutParams.WRAP_CONTENT);
//设置pop的高
pop.setHeight(LayoutParams.WRAP_CONTENT);
//找到一个view 为了设置pop弹出的位置
View tv = findViewById(R.id.tv);
//弹出到tv下方 并且相对于此位置的偏移量
pop.showAsDropDown(tv,100, 50);
}
}
其他代码 和上一个例子一样
效果图
效果图解释
//设置pop的宽
pop.setWidth(LayoutParams.WRAP_CONTENT);
//设置pop的高
pop.setHeight(LayoutParams.WRAP_CONTENT);
//找到一个view 为了设置pop弹出的位置
View tv = findViewById(R.id.tv);
//弹出到tv下方 并且相对于此位置的偏移量
pop.showAsDropDown(tv,100, 50);
在tv控件下方然后相对于x便宜100 还有y便宜50 并且由于pop为包裹内容故有此效果
PopupWindow pop = new PopupWindow(上下文, 填充宽, 填充高);并相对于父布局位置案例1:
java代码:
package com.fmy.popwindowdemo;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.text.Layout;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.PopupWindow;
import android.widget.LinearLayout.LayoutParams;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v) {
//获取布局填充器
LayoutInflater inflater = LayoutInflater.from(this);
//把布局填充一个view
View converView = inflater.inflate(R.layout.layout, null);
//创建一个pop
PopupWindow pop = new PopupWindow(converView,android.app.ActionBar.LayoutParams.WRAP_CONTENT,android.app.ActionBar.LayoutParams.WRAP_CONTENT);
//找到一个view 为了设置pop弹出的位置
View tv = inflater.inflate(R.layout.activity_main, null);
pop.showAtLocation(tv, Gravity.RIGHT,0,50);
}
}
效果图:
效果图解释:
View tv = inflater.inflate(R.layout.activity_main, null);
pop.showAtLocation(tv, Gravity.RIGHT,0,50);
由于相对于父布局显示 又设置了Gravity.RIGHT所以pop在右边显示 然后在Y轴偏移50导致了最后的效果
12 PopupWindow的更多相关文章
- python 各模块
01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支 ...
- Python Standard Library
Python Standard Library "We'd like to pretend that 'Fredrik' is a role, but even hundreds of vo ...
- 在mybatis中写sql语句的一些体会
本文会使用一个案例,就mybatis的一些基础语法进行讲解.案例中使用到的数据库表和对象如下: article表:这个表存放的是文章的基础信息 -- ------------------------- ...
- PopupWindow 使用
昨天马失前蹄,为了做一个小键盘,耽误了两个小时,记录一下心路历程 1.关于需求与选择 需求: 点击一个按钮,弹出一个小键盘(类似于输入法键盘) 选择: (1)方案一:KeyboardView 这是百度 ...
- android模仿58筛选下拉框(PopupWindow实现)
前言:前几天用58同城APP找房子的时候,看到筛选下拉框蛮不错的,然后也有很多朋友需要实现这个功能,于是从网上下载了一个demo,在他的基础上进行修改,花了几个小时对他的代码进行修改,重构,封装.把一 ...
- Android中的PopupWindow
1.功能 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的,可以设置显示位置. 2.需求 弹出软键盘,实现键盘功能从而 ...
- 使用PopupWindow
PopupWindow可以用来实现弹出任意位置的菜单,比Context Menu和Option Menu灵活性更高.Android中弹出一个PopupWindow基本有两个方法: 1 2 //Disp ...
- Android popupwindow 弹出的位置问题
在Android开发中,需要用到PopupWindow这个类.在初始化完成,显示之前,都需要获得这个对象的width,height去计算popupWindow弹出的位置. 这个时候会发现取得的widt ...
- popupwindow 模拟新浪、腾讯title弹框效果
.jpg外部引用 原始文档 MainActivity.java外部引用 原始文档 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
随机推荐
- [HNOI2003]消防局的设立
题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状 ...
- [BZOJ]4162: shlw loves matrix II
Time Limit: 30 Sec Memory Limit: 128 MB Description 给定矩阵 M,请计算 M^n,并将其中每一个元素对 1000000007 取模输出. Inpu ...
- 【vijos1943】上学路上
题目戳这里 描述 小雪与小可可吵架了,他们决定以后互相再也不理对方了.尤其是,他们希望以后上学的路上不会再相遇. 我们将他们所在城市的道路网视作无限大的正交网格图,每一个整数点 (x,y) 对应了一个 ...
- 主席树(BZOJ2653)
考虑二分答案,设为k,将大于等于k的元素设为1,小于的设为-1,如果某一段的和>=0,说明这段的中位数>=k. 对于每组询问,二分完后查询新序列的最大子段和即可. 但是不能开n棵线段树,观 ...
- C语言程序设计第一次作业1
(一)实验总结 1. 圆面积问题 1:求圆面积和周长 (1)输入圆的半径,计算圆的周长和面积. (2) (3) 2:判断闰年 (1)输入一个四位年份,判断其是否是闰年.闰年的判别条件是该年年份能被4整 ...
- python3全栈开发-并发编程的多进程理论
一. 什么是进程 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 举例(单核+多道,实现多个进程的并发执行): duoduo在一个时间段内有很多任务要做:python备课的任务,写 ...
- 开发一个 app 有多难?
171 个回答 默认排序 道衍天机 有事情的加微信1293190838找我 1,150 人赞同了该回答 ----------------------------------------------- ...
- struts2中action的class属性值意义
整合了spring就不同了,orz struts2单独使用时action由struts2自己负责创建:与spring集成时,action实例由spring负责创建(依赖注入).这导致在两种情况下str ...
- bootstrap插件fileinput.js 出现出现$("#xxxx").fileinput({}); 不生效的情况解决
如果出现$("#xxxx").fileinput({}); 不生效的情况请将fileinput.js中最后几行注释掉: /* $(document).ready(function ...
- javascript requestAnimationFarme
今天看到一篇很好的文章推荐一下:原文地址:http://www.zhangxinxu.com/wordpress/?p=3695 CSS3动画那么强,requestAnimationFrame还有毛线 ...