浅谈PopupWindow弹出菜单
实现将一个View显示在某一位置,而且是浮于当前窗口
首先要有一个要显示的view的布局,可以是任意View,包括ViewGroup
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:background="#d3d3d3" 6 android:gravity="center_horizontal" 7 android:orientation="vertical" > 8 9 10 <TextView 11 android:layout_width="match_parent" 12 android:layout_height="wrap_content" 13 android:gravity="center" 14 android:id="@+id/textView" 15 android:text="文本内容" 16 /> 17 </LinearLayout>
然后主界面布局文件
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 tools:context=".MainActivity" > 6 7 <LinearLayout 8 android:layout_width="match_parent" 9 android:layout_height="wrap_content" 10 android:orientation="horizontal" 11 > 12 <!-- 区域 --> 13 <Button 14 android:layout_width="0dp" 15 android:layout_weight="1" 16 android:gravity="center" 17 android:background="#0000" 18 android:layout_height="wrap_content" 19 android:text="区域" 20 android:drawableRight="@drawable/title_bar_arrow_nor" 21 android:id="@+id/btn_1" 22 /> 23 <!-- 类别 --> 24 <Button 25 android:background="#0000" 26 android:layout_width="0dp" 27 android:layout_weight="1" 28 android:layout_height="wrap_content" 29 android:text="类别" 30 android:drawableRight="@drawable/title_bar_arrow_nor" 31 android:id="@+id/btn_2" 32 /> 33 34 <!-- 价格 --> 35 <Button 36 android:background="#0000" 37 android:layout_width="0dp" 38 android:layout_weight="1" 39 android:layout_height="wrap_content" 40 android:text="价格" 41 android:drawableRight="@drawable/title_bar_arrow_nor" 42 android:id="@+id/btn_3" 43 /> 44 45 <!-- 更多 --> 46 <Button 47 android:background="#0000" 48 android:layout_width="0dp" 49 android:layout_weight="1" 50 android:layout_height="wrap_content" 51 android:text="更多" 52 android:drawableRight="@drawable/title_bar_arrow_nor" 53 android:id="@+id/btn_4" 54 /> 55 56 </LinearLayout> 57 58 </RelativeLayout>
主activity
1 package com.example.aaa; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.view.ViewGroup; 8 import android.widget.Button; 9 import android.widget.PopupWindow; 10 import android.widget.TextView; 11 12 public class MainActivity extends Activity implements OnClickListener { 13 14 private PopupWindow pop; 15 16 private Button btn1; 17 private Button btn2; 18 private Button btn3; 19 private Button btn4; 20 21 private TextView text; 22 23 View view; 24 @Override 25 protected void onCreate(Bundle savedInstanceState) { 26 super.onCreate(savedInstanceState); 27 setContentView(R.layout.activity_main); 28 29 initView(); 30 initPopWindow(); 31 32 } 33 34 private void initView() { 35 // TODO Auto-generated method stub 36 btn1 = (Button) findViewById(R.id.btn_1); 37 btn2 = (Button) findViewById(R.id.btn_2); 38 btn3 = (Button) findViewById(R.id.btn_3); 39 btn4 = (Button) findViewById(R.id.btn_4); 40 btn1.setOnClickListener(this); 41 btn2.setOnClickListener(this); 42 btn3.setOnClickListener(this); 43 btn4.setOnClickListener(this); 44 } 45 46 47 private void initPopWindow() { 48 // TODO Auto-generated method stub 49 //根据layout创建弹出界面 50 view = this.getLayoutInflater().inflate(R.layout.popup_window, null); 51 pop = new PopupWindow(view, ViewGroup.LayoutParams.FILL_PARENT, 52 ViewGroup.LayoutParams.WRAP_CONTENT); 53 text = (TextView) view.findViewById(R.id.textView); 54 55 pop.setOutsideTouchable(true); 56 view.setOnClickListener(new View.OnClickListener() { 57 @Override 58 public void onClick(View v) { 59 // TODO Auto-generated method stub 60 pop.dismiss(); 61 } 62 }); 63 64 } 65 66 @Override 67 public void onClick(View v) { 68 // TODO Auto-generated method stub 69 switch (v.getId()) { 70 case R.id.btn_1: 71 text.setText("区域"); 72 if(pop.isShowing()) 73 pop.dismiss(); 74 else 75 pop.showAsDropDown(v); 76 break; 77 case R.id.btn_2: 78 text.setText("类别"); 79 if(pop.isShowing()) 80 pop.dismiss(); 81 else 82 pop.showAsDropDown(v); 83 break; 84 case R.id.btn_3: 85 text.setText("价格"); 86 if(pop.isShowing()) 87 pop.dismiss(); 88 else 89 pop.showAsDropDown(v); 90 break; 91 case R.id.btn_4: 92 text.setText("更多"); 93 if(pop.isShowing()) 94 pop.dismiss(); 95 else 96 pop.showAsDropDown(v); 97 break; 98 99 default: 100 break; 101 } 102 } 103 104 }
出现位置的几个方法
showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移 showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移 showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移
效果图:
浅谈PopupWindow弹出菜单相关推荐
- php layer弹出层更改背景,浅谈layer弹出层按钮颜色修改方法
layer弹出层有多种格式的弹出,使用方法也不细述. 在弹出确认框可使用confirm或open方式 在open中 layer.open({ content: '确认提交?', btn: [" ...
- 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题
如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 参考文章: (1)如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 (2)https://ww ...
- 【转载】Android之用PopupWindow实现弹出菜单
在使用UC-WebBrowser时,你会发现它的弹出菜单跟系统自带的菜单不一样.它实现更多菜单选项的显示和分栏.其实,它的本身是PopupWindow或者是AlertDialog对话框,在里面添加两个 ...
- 教你如何创建类似QQ的android弹出菜单
热心推荐: Android ListView两种长按弹出菜单方式 popupwindow实现弹出菜单效果 Android人才招聘--最新招聘 大家可能看到 android 的自带的系统菜单比较难看, ...
- [Android] 底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)
这篇文章主要是自己研究如何对底部菜单进行布局,并简单的实现点击不同"按钮"实现图片切换和背景切换的功能,最后通过PopupWindows实现弹出菜单,点击不同按钮能实现不同 ...
- 用 JA Transmenu 模块做多级弹出菜单
转自http://www.joomlagate.com "弹出菜单"这个说法本来不规范,尽管你我都明白这是什么意思,而实际上我们所理解的那个菜单样式英文说法是"Slide ...
- Android之PopupWindow弹出对话框
Android的对话框常用的有两种:PopupWindow和AlertDialog. popupWindow是一个阻塞式的弹出框,这就意味着在我们退出这个弹出框之前,程序会一直等待,,这就意味着在我们 ...
- Android仿Qzone底部导航栏加号弹出菜单
最近看到QQ空间 新浪微博-.好多应用底部导航栏都有加号点击弹出菜单,于是就写了一个demo,来给没做过这个功能的小伙伴一个参考,希望对大家有所帮助,demo中的图片均来源于Qzone 仅作为学习交流 ...
- 选项菜单_上下文菜单_子菜单_图标菜单_自定义菜单_联系人标记弹出菜单
菜单控件<Menu > 选项菜单(Option Menu) 单击Menu实体按钮弹出,android中把它叫做option menu 上下文菜单(ContextMenu 是Menu的子接口 ...
最新文章
- 基于 JWT + Refresh Token 的用户认证实践
- CSDN博客转载攻略
- 另一种无法enable ABAP source code tool的原因
- ambari 自定义组件安装
- java中不允许一个方法在自身定义的内部调用自己_Java面向对象三大特性(基础篇)...
- mfc三视图和斜等测图实现_如何在UE4中实现NPR(非真实感)渲染效果?
- Qt QJson遍历
- html调用一般处理程序方法,Web的初步篇:前台(HTML)和后台(一般处理程序)...
- photoshop是什么软件,它能做什么?
- 51单片机复习:红外通信
- Axure学习之简介
- Badboy 安装 使用 常见问题 badboy当前页面脚本发生错误
- java程序员 技术成长路线
- 总线揭密:串行传输VS并行传输
- 关于nofollow的问题
- 将数据库中的数据转换成json格式
- 一文读懂自动驾驶中常用的定位算法之NDT点云配准算法
- 解决for循环有时只输出最后一个结果
- Codeforces Round #375 (Div. 2) B. Text Document Analysis(字符串处理,简单题目)
- 小程序添加关注公众号代码功能
热门文章
- Mysql多表查询笔记
- JLabel跟label
- [Nodejs]初探nodejs学习笔记- 如何使用nodejs搭建简单的UDP聊天功能
- 2013长春区域赛总结
- 创新工场CE0李开复:互联网创业黄金时代来临
- 学习ccna,ccnp中如何提高英语问题
- MS SQL入门基础:数据库中的锁
- 小米8的MIUI12系统预置应用正在恢复
- java.lang.ClassCastException: cannot assign instance of java.lang.invoke.SerializedLambda to field
- 查看hive中某个表中的数据、表结构及所在路径