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 ...
随机推荐
- ●BZOJ 4710 [Jsoi2011]分特产
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4710 题解: 容斥,组合先看看这个方案数的计算:把 M 个相同的东西分给 N 个人,每个人可 ...
- 关于快速沃尔什变换(FWT)的一点学习和思考
最近在学FWT,抽点时间出来把这个算法总结一下. 快速沃尔什变换(Fast Walsh-Hadamard Transform),简称FWT.是快速完成集合卷积运算的一种算法. 主要功能是求:,其中为集 ...
- poj 1845 (逆元 + 约数和)
题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出. 思路: A可以表示为A=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn) 其中pi均为素数 那么A的 ...
- c++读写MySQL
看过很多C或是C++操作MySQL数据库的文章,大部分太吃力了,甚至有一部分根本没有很好的组织文字,初学者比较难以接受,即使是C++或是C高手也是比较难看懂.写这篇文章的目的不是别的,就一个,告诉您用 ...
- Java 实现32位MD5加密
MD5介绍[链接] Java代码实现 public class Md5Util { private String Md5Util(String s) { try { MessageDigest md ...
- PTA 邻接表存储图的广度优先遍历(20 分)
6-2 邻接表存储图的广度优先遍历(20 分) 试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(V ...
- python基础(1)
1.python中三元表达式 类比于C.C++.Java中都有的三目运算符,python中使用下面语句实现三元表达式 true_part if condition else false_part. c ...
- Mysql--开篇&目录
Mysql 现在是互联网公司中使用得非常广泛的数据库产品了,开源.免费.小巧.易用等诸多特性奠定了其夯实的基础.自己从事 JavaWeb 也有一段时间了,工作中也是用的 Mysql,也会涉及到分析.慢 ...
- webstorm2017破解
选择"license server" 输入:http://idea.imsxm.com/ 2017支持vue了
- ubuntu14.04 python2.7 安装配置OpenCV3.0
环境:ubuntu14.04 python2.7 内容:安装并配置OpenCV3.0 今天按照OpenCV官网上的步骤装了OpenCV但是,装好之后python提示“No module named ...