PopupWindow是一个弹出式窗口,它可以展示任意View。他会浮在当前窗口的上方展示。

下面看代码:

public class MyActivity extends Activity

{

private PopupWindow menu;

private LayoutInflater inflater;

private View layout;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//实例化PopupWindow创建菜单

initMenu();

}

//判断按键 菜单的显示与隐藏

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if(!menu.isShowing()&&keyCode == KeyEvent.KEYCODE_MENU){

show();

}else{

menu.dismiss();

}

if(keyCode == KeyEvent.KEYCODE_BACK&&menu.isShowing()){

menu.dismiss();

}

return true;

}

//实例化PopupWindow创建菜单

private void initMenu(){

//获取LayoutInflater实例

inflater  = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);

//获取弹出菜单的布局

layout = inflater.inflate(R.layout.menu,null);

//设置popupWindow的布局

menu = new PopupWindow(layout, WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT);

}

//显示菜单

private void show(){

//设置位置

menu.showAtLocation(this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL,0,0); //设置在屏幕中的显示位置

}

}

复制代码

菜单的布局文件:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal"

>

<ImageView

android:id="@+id/icon_1"

android:background="@drawable/icon_1"

android:layout_width="40dp"

android:layout_height="40dp"/>

<ImageView

android:id="@+id/icon_2"

android:background="@drawable/icon_2"

android:layout_width="40dp"

android:layout_height="40dp"/>

<ImageView

android:id="@+id/icon_3"

android:background="@drawable/icon3"

android:layout_width="40dp"

android:layout_height="40dp"/>

<ImageView

android:id="@+id/icon_4"

android:background="@drawable/icon4"

android:layout_width="40dp"

android:layout_height="40dp"/>

</LinearLayout>

复制代码

转载于:https://www.cnblogs.com/xiaochao1234/p/3535876.html

安卓学习笔记:使用PopupWindow创建简单菜单相关推荐

  1. Android:安卓学习笔记之navigation的简单理解和使用

    Android navigation的简单理解和使用 1 .基本概念 1.1.背景 1.2.含义 2.组成 2.1.Navigation graph 2.2.NavHostFragment 2.3.N ...

  2. Android:安卓学习笔记之Bitmap的简单理解和使用

    Android Bitmap的简单理解和使用 Android Bitmap 一.Bitmap的定义 二.Bitmap的格式 2.1 存储格式 2.2 压缩格式 三.Bitmap创建方法 3.1 Bit ...

  3. blfs(systemv版本)学习笔记-使用apache创建简单的网页服务器

    apache项目地址:http://www.linuxfromscratch.org/blfs/view/stable/server/apache.html 一.编译安装apache apache的依 ...

  4. 2020年安卓学习笔记目录

    文章目录 一.讲课笔记 二.安卓案例 三.安卓实训项目 四.学生安卓学习博客 五.安卓课后作业 (一)界面设计练习 1.制作登录界面 2.制作部队管理界面 3.制作灭火救援界面 4.制作交付界面 5. ...

  5. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  6. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  7. 安卓学习笔记07:事件处理、窗口跳转与传递数据

    文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...

  8. ROS学习笔记八:创建ROS msg和srv

    ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...

  9. ROS学习笔记三:创建ROS软件包

    ,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...

最新文章

  1. 相机标定 matlab opencv ROS三种方法标定步骤(2)
  2. [kuangbin带你飞]专题五 并查集 E - 食物链 (带权并查集)
  3. LeetCode 191 Number of 1 Bits
  4. WSFC 仲裁模型选择
  5. 高并发编程-Daemon Thread的创建以及使用场景分析
  6. oracle 信用检查,Oracle EBS 信用(Credit)额度(1)-基础设置
  7. visual 对话框之间调用_两套S71200之间实现S7通讯的方法
  8. C++打印浮点数时保留两位小数
  9. 学python开发必须要会wsgi么_python Web开发你要理解的WSGI uwsgi详解
  10. LINUX之samba服务器的安装与配置(基于redhat 6.3发行版)
  11. python3入门与实践
  12. python收集参数_Python 中函数的 收集参数 机制
  13. TurboFan的故事
  14. 树莓派3B的默认用户名和密码
  15. Lync添加自定义菜单
  16. 大数据分析——暑期黑马《延禧攻略》到底有多火!
  17. 租衣APP开发前景分析
  18. android 4.0 原生短信,Android 4.0 短信发不出去解决办法
  19. 正确的iconv使用方法
  20. 司铭宇老师谈大客户销售技巧之如何做好大客户营销

热门文章

  1. 输出整数各位数字 (15 分)
  2. PTA10、统计字符个数 (10 分)
  3. linux 内核 md5 算法_Linux内核中的数据结构和算法
  4. mysql 语句账号注入_mysql中SQL语句的注入问题
  5. linux mysql降权_怎样将mysql数据库root降权
  6. 【LOJ】#3123. 「CTS2019 | CTSC2019」重复
  7. setCharacterEncoding 是在request.getParameter获取参数之前 设置request的编码格式 一步到位...
  8. 流式大数据计算实践(4)----HBase安装
  9. node模块加载机制。
  10. Yii2 认证实现原理和示例