如何自定义菜单(点击菜单键,弹出一个popwindow)

PopupWindow 和 Dialog 的区别,我们应该选择哪一个呢? 对于临时性的信息提示和选项菜单,`PopupWindow` 更为合适。而对于需要用户明确回应的重要交互,`Dialog` 则是更好的选择。 阅读详情

MainActivity

package com.example.zdymenu;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.Toast;

// 介绍如何自定义菜单,点击菜单键,弹出一个popwindow
public class MainActivity extends Activity implements OnClickListener {

    private Context context = MainActivity.this;
    private View v;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 这个view是为了显示popwindow时,给其提供一个父视图
        v = findViewById(R.id.rl);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // ★注意:要自定义menu,就把下面这句话注释掉,否则既显示系统默认的菜单又显示自定义的菜单
        // getMenuInflater().inflate(R.menu.main, menu);
        // ★★记得这里必须返回true,否则无论是系统默认菜单还是自定义的菜单都不会显示
        return true;
    }

    // 当点击菜单按钮时,调用此方法,在这里我们自定义让其弹出一个popwindow
    @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
        // TODO Auto-generated method stub
        showPopWindow(v);
        return super.onMenuOpened(featureId, menu);
    }

    // 显示popwindow的方法
    private void showPopWindow(View v) {
        // 一、把一个自定义的布局打气,作为popwindow要显示的内容
        View contentView = LayoutInflater.from(context).inflate(
                R.layout.pop_layout, null);
        // 二、找到该布局中的控件
        LinearLayout layoutSeclect1 = (LinearLayout) contentView
                .findViewById(R.id.layoutSeclect1);
        LinearLayout layoutSeclect2 = (LinearLayout) contentView
                .findViewById(R.id.layoutSeclect2);
        // 三、设置控件的点击事件
        layoutSeclect1.setOnClickListener(this);
        layoutSeclect2.setOnClickListener(this);
        // 四、new出PopupWindow,参数为PopupWindow显示的内容view、宽、高、是否可获取焦点
        PopupWindow popupWindow = new PopupWindow(contentView,
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);
        popupWindow.setTouchable(true);// 不写也行,因为默认为true,可触摸
        // 五、★必须设置背景:如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
        popupWindow.setBackgroundDrawable(new BitmapDrawable(context
                .getResources()));
        // ——————————————————————————————————————————————————————————————————————————————————————————
        // 六、让PopupWindow显示出来:显示popwindow的方式有两种,看你是想相对于某个控件显示,还是相对于父控件显示
        // 1.showAsDropDown指的是显示在v控件的周围,是以这个控件为基点的
        // popupWindow.showAsDropDown(v);
        // popupWindow.showAsDropDown(v, 0, -30);//这里的坐标是基于附着控件的左下角,下右为正
        // 2.showAtLocation指的是显示在现对于父控件的位置,第一个参数view和相对于控件的一样
        popupWindow.showAtLocation(v, Gravity.CENTER | Gravity.CENTER, 0, 0);

    }

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.layoutSeclect1:
            Toast.makeText(context, "模式1", Toast.LENGTH_SHORT).show();
            break;
        case R.id.layoutSeclect2:
            Toast.makeText(context, "模式2", Toast.LENGTH_SHORT).show();
            break;
        }
    }

}

布局

activity_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.example.zdymenu.MainActivity" 
    android:id="@+id/rl">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

pop_layout

<?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:background="#0000" >

    <!--
  popupwimdow的布局注意不能使用类似        
    android:layout_marginTop=""这样属性,特别是相对布局时候. 
  布局或者控件整体靠左等都会影响popupwimdow定位使用
    -->

    <LinearLayout
        android:id="@+id/hot_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/pop"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/layoutSeclect1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:onClick="OnclickTestListener" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="8dp"
                android:text="回家的方案1"
                android:textColor="#fff"
                android:textSize="18sp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/layoutSeclect2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:onClick="OnclickTestListener" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="8dp"
                android:text="回家的方案2"
                android:textColor="#fff"
                android:textSize="18sp" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>
Android进阶之路 - popupWindow使用详解 popupWindow还是比较好用的一款控件,他不会像Dialog一样让内容与样式死板,他的优势就在于我们可以填充自己喜欢的样式;在使用中遮盖层是个不大不小的问题,本文已经解决,同时还有一些其他问题的解决方式,也都在代码中进行了注释,大家请直接往下看吧(PS:最后又惊喜,或许你想要的答案就在最后哦) 阅读详情

相关推荐

PopupWindow的基本使用

在本文中,我将详细介绍PopupWindow的基本使用方法,并提供相应的源代码示例。在上面的示例中,我们设置了弹出窗口的宽度为400像素,高度为600像素。在上面的示例中,我们创建了一个PopupWindow对象,并将其内容视图设置为R.layout.popup_layout。你可以根据自己的需求创建一个自定义的布局资源,并将其用作PopupWindow的内容视图。接下来,我们可以设置PopupWindow的一些属性,如弹出窗口的宽度、高度、动画效果、背景等。方法来显示弹出窗口。在上面的示例中,我们使用。

OwxLinux的博客 363

PopUpWindow使用详解(一)——基本使用

前言:不要嫌前进的慢,只要一直在前进就好。 相关文章: 1、《PopUpWindow使用详解(一)——基本使用》 2、《PopUpWindow使用详解(二)——进阶及答疑》 有同学讲到想要知道PopUpWindow的知识,这里就给大家讲一讲PopUpWindow的基本用法和原理吧。这段时间博客可能会更新比较慢,因为你懂的 !!-_- ,往左看公告,嘿嘿。 先看一下我们要做的效果...

启舰 17万+

Android弹出式界面开发:深入理解PopWindow与Dialog

本文还有配套的精品资源,点击获取 简介:在Android开发中, PopWindow 和 Dialog 是用于创建临时交互界面的两个重要组件。 PopWindow 提供了一种浮动窗口,具有高度的自定义性,适用于创建快捷菜单或复杂的交互布局。而 Dialog 则是一个半透明窗口,用于展示信息或进行重要决策,通常包含标准的...

weixin_42113456的博客 2747

PopupWindow(弹窗)

1.按钮绑定一个事件,这个实在点击事件里面的,而后面的方法为showPopupWindow()方法,此方法是由上面的 showPopWindow();方法产生的,用来设置PopWindow private void showPopWindow(View view) { //实例化对象,这个id就是弹窗的页面的id,后面的参数问的是有没有父容器,由于没有,所以未null //这句代码的意义是,将R.layout.tanchuang,即弹窗看作一个view来显示,而这个方法即为Lay..

qq_63892580的博客 3829

ET篇:Google.Protobuf的学习(理解基本的使用流程)

据我目前所知,ET使用的数据交换协议是Google.Protobuf,所以今天就来学习一下,但是网上许多人都是以高下立判的方式讲解的,对新手小白很不友好,所以我今天就以纯小白的视角和大家一起学习 学习环境: .NET Core2.2 .NET Framework 4.7.2 Rider protobuf-csharp-3.7.0-rc-2 Google.Protobuf简介 prot...

设计师养成记 3563

VGA系列之一:VGA显示网络图片

VGA系列之一:VGA显示网络图片VGA系列之一VGA显示网络图片 1 如何用FPGA实现VGA显示 2 网络图片和VGA显示有何区别 3VGA如何显示图片

善良の一休君的博客 1万+

popwindow实现下拉菜单弹出和收缩效果

别的不多说先上图吧 以前做这样的功能,我都是自定义一个LinerLayout,然后控制它的隐藏和显示,还需要添加弹出和隐藏的动画效果。另外还需要处理点击空白处和返回该键下拉菜单自动关闭。今天在eoe上无意看到popwindow也能实现这样的功能,而且根本不需要处理动画效果和空白处、返回键点击自动关闭的功能。哎,看来我真的out了,直接上代码: 这里是自定义的PopMen

duanyu218的专栏 4698

AT91SAM9260搭建LINUX操作系统

一、 编写目的 2 二、 系统搭建 2 1. 下载相关软件包 2 2. Bootstrap编译 3 3. U-BOOT编译 5 4. LINUX编译 7 5. 通过U-BOOT的TFTP命令从TFTP服务器下载系统镜像 9 6. 文件系统制作 10 7. 挂载NFS作为根文件系统 10 三、 总结 14 一、编写目的 本文档用于记录AT91SAM9260 LINUX学

lshiceman的专栏 7412

Android点击菜单键(menu)弹出popWindow

点击menu实现弹出popWindow的功能并不是很复杂,但是容易出现的问题是popWindow中的组件的监听事件和menu按钮的监听事件发生冲突 点击menu菜单键弹出popWindow之后再次点击menu菜单键popWindow无法消失,或者点击popWindow中的组件比如listView监听事件无法响应 最近一直被这个问题困扰 ,在查过众多资料后,今天终于将这个问题解决了 贴出代

sosohotsummer的专栏 4723

告别卡顿!手把手教你用北鲲云超算平台图形化提交COMSOL仿真任务(附RDP连接技巧)

本文详细介绍了如何利用北鲲云超算平台图形化提交COMSOL仿真任务,解决本地计算资源不足导致的卡顿问题。通过云端高性能计算,用户可轻松配置多核CPU和大内存资源,实现高效仿真计算,并附有RDP连接优化技巧,提升远程操作体验。

weixin_42519781的博客 379

项目管理面试常见问题及答案

1. 项目管理软件工具知识,   2. 编制项目计划的技术,   3. 人员管理技能   4. 沟通技能   5. 原理体系知识(标生命周期和项目管理)。 项目管理软件工具知识   问题1:工期和工作量之间的差异是什么?   答案1:工期是商业/日历上的天数,与人数和工作量无关。工作量是与日历天数无关的人的工作。例如:   一天的工作量对于一个一只花50%在时间在上面的人来说,他的工期就是两天。...

okbin1991的博客 2840

android怎么弹出菜单,怎么在Android中利用Popwindow弹出菜单

怎么在Android中利用Popwindow弹出菜单发布时间:2020-11-27 17:02:43来源:亿速云阅读:100作者:Leah这期内容当中小编将会给大家带来有关怎么在Android中利用Popwindow弹出菜单,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.popWindow就是对话框的一种方式!此文讲解的android中对话框的一种使用方式,它...

weixin_42575109的博客 576

51单片机-点亮LED和蜂鸣器

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003是大电流驱动陈列,多用于单片机、只能仪表、PLC、数字量输出卡等控制电路中。可直接驱动蜂鸣器、继电器等负载。void delay(u16 i) // i等于1大约10uswhile(i--);//取反,高低电平不断变化,产生脉冲delay(10);// 周期200us。

三日沐水 1126

android 弹框菜单,Android 中Popwindow弹出菜单的两种方法实例

Android 中Popwindow弹出菜单的两种方法实例1.popWindow就是对话框的一种方式!此文讲解的android中对话框的一种使用方式,它叫popWindow。2、popWindow的特性Android的对话框有两种:PopupWindow和AlertDialog。它们的不同点在于:AlertDialog的位置固定,而PopupWindow的位置可以随意。AlertDialog是非阻...

weixin_42402241的博客 863

如何用 Claude Code 阅读和理解陌生代码

摘要: 在接手陌生代码时,Claude Code能显著提升理解效率。核心策略是结构化拆解而非逐行阅读: 从整体入手:先扫描目录结构、定位核心模块,建立项目地图; 聚焦关键路径:通过数据流追踪、异常逻辑分析,识别技术债与风险点; 规避常见错误:避免抽象提问或一次性提交全部代码,应分模块精准提问; 高阶应用:可生成逻辑分层图、标记高复杂度区域,甚至定制阅读顺序。 最终目标是通过结构优先的提问策略,将理解周期从数天压缩至数小时。

sg_knight的专栏 1019

面向业务角色的 SAP Fiori Space 与 Page 创建全流程实战指南

业务角色导航设计:从Space与Page规划到实施 摘要:本文探讨了SAP S/4HANA Cloud和BTP ABAP环境中基于业务角色的导航设计方法。传统Fiori Launchpad的Group+Tile模式存在应用堆积问题,而新的Space与Page模型将导航按工作领域(如应付会计、销售代表)组织,每个Space包含多个任务导向的Page。文章详细介绍了从业务角色建模到Space/Page创建、分配的完整流程,包括核心概念解析、规划思路和具体操作步骤。重点阐述了如何根据业务需求选择创建方式(基于预交

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 183

android弹出自定义layout菜单,Android:PopWindow — 对Android的底部弹窗、顶部弹窗菜单及自定义界面的使用封装...

转载请注明出处:http://blog..net/hmyang314/article/details/70613478PopWindow对Android的底部弹窗,顶部弹窗菜单及自定义界面的使用封装。GitHub:https://github.com/HMY314/PopWindow一,介绍主要是用于在弹窗中显示一些有限的菜单项,也支持添加自定义View,有如下3中弹出方式:1、底部弹出,主要参...

weixin_31283549的博客 1137

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android自定义PopWindow(QQ、微信弹出菜单)

前段时间在个人开发的项目中需要用到弹出菜单,类似QQ右上角的弹出菜单,自己使用popwin的次数也不是很多,其中也遇到过一点问题,今天正好有时间就把一些经验分享给大家。 先来看看最终实现过后的效果怎么样,下面放上图 自定义的弹出菜单是继承的popwin,并不是view 因为没有必要重复造车轮,如果想要实现某种特殊的效果另说。首先创建类MyPopWindow继承Popwindow。

caicdd007的专栏 7389

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android popwindow实现左侧弹出菜单层

http://www.yoyong.com/archives/613 学习一下PopupWindow的浮层显示效果。 PopupWindow可以实现浮层效果,主要方法有:可以自定义view,通过LayoutInflator方法;可以出现和退出时显示动画;可以指定显示位置等。 为了将PopupWindow的多个功能展现并力求用简单的代码实现,编写了一个点击按钮左侧弹出菜单的功能,实现出现和退出...

shikun520的专栏 525

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

popwindow点击外部取消不了和popwindow弹出抖动动画

因为项目有需要,在退出登录的时候做一个抖动的对话框,来提醒用户。下面啥也不说了,上代码: case R.id.btn_exit: showPopup(view);//显示 break; 有需要popwindow的一些属性: private void showPopup(View view) { //加载布局 View contentViewt = L

Running的博客 822

android qq 弹出菜单,Android QQ列表长按弹出PopWindow菜单

原理这里只是简单讲述原理,实现很简单功能,有兴趣的读者可自行优化修改。popWindow具有在屏幕上绝对定位的能力,因此,我们主要利用popWindow的showAtLocation实现pop菜单的弹出,此外还需要通过View.getLocationAt获取view在在屏幕中的位置信息。代码实战布局文件android:layout_width="match_parent"android:layou...

weixin_39625709的博客 270

自定义popWindow(高仿qq加号弹出框)

1) 弹出菜单的封装PopMenu 这里自定义的PopMenu类就是自定义的一个容器类,这个容器就是我们用来放置popWindow的相关的内容。 package tongchuang.com.test.app.utils.GZXPopWindowView; /**  * Created by Administrator on 2016/5/25 0025.  */ import

若先设计 3059

Android之用PopupWindow实现弹出菜单

Android之用PopupWindow实现弹出菜单---多选项、分栏菜单

kkfdsa132的专栏 7万+

【Android】创建Popwindow弹出菜单

菜单是我们做应用 的时候经常要用到的,像UC等都有,今天也做了个小Demo,用POPWindow实现的。弹出效果主要使用了translate和alpha样式实现 POP的主要代码: private void showPop() { ViewGroup menuView = (ViewGroup) getLayoutInflater().inflate( R.layout.gridv

每天进步一点点 1745

【Android】创建Popwindow弹出菜单的两种方式

方法一的Activity package com.app.test02; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import an...

weixin_30482383的博客 491

android popwindow实现左侧弹出菜…

http://www.apkbus.com/android-44903-1-1.html 学习一下PopupWindow的浮层显示效果。 PopupWindow可以实现浮层效果,主要方法有:可以自定义view,通过LayoutInflator方法;可以出现和退出时显示动画;可以指定显示位置等。 为了将PopupWindow的多个功能展现并力求用简单的代码实现,编写了一个点击按钮左侧弹出菜单的功能

722
上一篇: 如何写菜单
下一篇: 如何上写文菜单
Android_Study_OK
博客等级 码龄11年 91粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值