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 ...
随机推荐
- [TJOI2017]异或和
题目描述 在加里敦中学的小明最近爱上了数学竞赛,很多数学竞赛的题都是与序列的连续和相关的.所以对于一个序列,求出它们所有的连续和来说,小明觉得十分的 简单.但今天小明遇到了一个序列和的难题,这个题目不 ...
- Orz
OR: 说实话,感觉Virtual Judge挺好使的,至少到现在,Uva都没注册成功过QAQ,估计是校园网的问题 不得不说现在课越来越多,而且对于我们这种学校ACM才开展两年的来说,时间真的好有限, ...
- bzoj3963[WF2011]MachineWorks cdq分治+斜率优化dp
3963: [WF2011]MachineWorks Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 270 Solved: 80[Submit][S ...
- MySql 时间操作实例
SELECT NOW(6) AS '当前时间精确到微秒'; SELECT UNIX_TIMESTAMP() AS '当前时间戳',UNIX_TIMESTAMP('2018-1-1') AS '转换成时 ...
- Linux配置服务器的一点总结
一.Linux初始化服务 首先搞清楚四个概念: 进程:正在运行的程序,有自己独立的内存空间. 线程:是进程的下属单位,开销较进程小,没有自己独立的内存空间. 作业:由一系列进程组成,来完成某一项任务. ...
- Redis持久化的两种方式(RDB和AOF)
redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File). RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储 ...
- Button 使用Command 按钮置灰未更新
当Button绑定了Command,按钮在窗口弹出.或者其它事件时,会自动置灰. 有时,异步执行时间较长时,界面一些绑定了命令的Button,State不会变化,会一直置灰. 直到再次转移Focus. ...
- 《Python黑帽子》_1设置Python环境安装wingIDE
1首先你得有个Kali 检测python版本 安装pip 2安装wingIDE 网站 http://www.wingware.com 获取WingIDE 3解压wingide并且解决依赖关系 下载后在 ...
- Angular5 路由传参的3种方法
一共3种方法. 1.问号后面带的参数,获取参数的方式:ActivatedRoute.queryParams[id] 例如:/product?id=1&name=iphone还可以是: [rou ...
- log4cxx用环境变量设置输出文件名
log4cxx用环境变量设置输出文件名(金庆的专栏 2016.12)利用环境变量,可以用同一个log4j.xml来配置多个相似进程,输出日志到不同文件.例如多个BaseApp进程使用同一个BaseAp ...