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 ...
随机推荐
- ●POJ 2828 Buy Tickets
题链: http://poj.org/problem?id=2828 题解: 线段树. 逆向考虑这个过程.最后的序列S共有n个元素. 先看最后一个人,如果他插入到第i位,那么他最终的位置就是当前序列S ...
- UVA 11584 划分回文字串
将其划分为尽可能少的回文串 dp[i] = min(dp[i],dp[j] + 1) 来表示j+1~i是回文串 #include <iostream> #include <cs ...
- POJ 3045 Cow Acrobats
Description Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away a ...
- bzoj3129[Sdoi2013]方程 exlucas+容斥原理
3129: [Sdoi2013]方程 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 582 Solved: 338[Submit][Status][ ...
- bzoj2839: 集合计数 容斥+组合
2839: 集合计数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 523 Solved: 287[Submit][Status][Discuss] ...
- You And Me 不见不散!
泰戈尔说: 有一个夜晚,我烧毁了所有的记忆, 从此我的梦就透明了: 有个早晨我扔掉了所有的昨天, 从此我的脚步就轻盈了! 越过山丘,才发现无人等候! 有段话最近很流行:20多岁的你,迷茫又着急,你想要 ...
- 用js实现排列组合
在leetcode上看到一个题,代码实现排列组合的. 记得大学上课时候,就用c写过,现在用js试试,顺便看看耗时. 先看看3的阶乘: function permute(temArr,testArr){ ...
- C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节
C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节 1.Qt概述 1.1 什么是Qt Qt是一个跨平台的C++图形用户界面应用程序框架.它为应用程序开发者提供建立艺术级图形界面 ...
- 记录 Python3 安装 Scrapy 遇到的问题
开发环境:Windows 10 + Python 3 使用 pip 去安装 Scrapy, pip install scrapy , 报了一个错误. 原因:加 --user 的作用是显式指定安装在用 ...
- python 循环和file操作实现用户密码输错三次将用户锁定
一.需求编写登录接口1.输入用户名密码2.认证成功后显示欢迎信息3.输错三次后锁定 二.简单思路登录,三次密码输入错误锁定用户1.用户信息文件:存放用户名和密码2.黑名单文件:将输入三次错误的用户加入 ...