转载请注明出处:http://blog.csdn.net/hmyang314/article/details/70920295DropPopMenu

显示位置跟随操作按钮显示的带箭头的弹出菜单

GitHub:https://github.com/HMY314/DropPopMenu

一,介绍

本项目是对带箭头的下拉弹出菜单进行了封装,使用简单,同时有如下特点:

1、可以动态修改菜单的背景;

2、弹出位置是依赖于操作按钮的位置显示,处理了按钮在边界位置引起的菜单显示错位问题;

3、菜单宽度以文字的最大长度作为宽度动态计算了;

4、菜单默认弹窗方向是在操作按钮下面,当操作按钮在屏幕底部时,或者菜单的

高度不能完全显示时,菜单是显示在操作按钮上面的

二,使用

1、默认风格

View view = findViewById......

mDropPopMenu = new DropPopMenu(this);

mDropPopMenu.setOnItemClickListener(new DropPopMenu.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> adapterView, View view, int position, long id, MenuItem menuItem) {

Toast.makeText(MainActivity.this, "点击了 " + menuItem.getItemId(), Toast.LENGTH_SHORT).show();

}

});

mDropPopMenu.setMenuList(getMenuList());

mDropPopMenu.show(view);

private ListgetMenuList() {

Listlist = new ArrayList<>();

list.add(new MenuItem(1, "选项"));

list.add(new MenuItem(2, "选项选项选项"));

list.add(new MenuItem(3, "选项选项选项选项"));

list.add(new MenuItem(4, "选项选项"));

list.add(new MenuItem(5, "选项选项选项"));

list.add(new MenuItem(5, "选项选项选项选项"));

return list;

}

2、改变弹窗背景、文字颜色

public void onClickPopWhite(View view) {

DropPopMenu dropPopMenu = new DropPopMenu(this);

dropPopMenu.setTriangleIndicatorViewColor(Color.WHITE);

dropPopMenu.setBackgroundResource(R.drawable.bg_drop_pop_menu_white_shap);

dropPopMenu.setItemTextColor(Color.BLACK);

dropPopMenu.setOnItemClickListener(new DropPopMenu.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> adapterView, View view, int position, long id, MenuItem menuItem) {

Toast.makeText(MainActivity.this, "点击了 " + menuItem.getItemId(), Toast.LENGTH_SHORT).show();

}

});

dropPopMenu.setMenuList(getMenuList());

dropPopMenu.show(view);

}

3、显示图标

public void onClickPopIcon(View view) {

DropPopMenu dropPopMenu = new DropPopMenu(this);

dropPopMenu.setTriangleIndicatorViewColor(Color.WHITE);

dropPopMenu.setBackgroundResource(R.drawable.bg_drop_pop_menu_white_shap);

dropPopMenu.setItemTextColor(Color.BLACK);

dropPopMenu.setIsShowIcon(true);

dropPopMenu.setOnItemClickListener(new DropPopMenu.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> adapterView, View view, int position, long id, MenuItem menuItem) {

Toast.makeText(MainActivity.this, "点击了 " + menuItem.getItemId(), Toast.LENGTH_SHORT).show();

}

});

dropPopMenu.setMenuList(getIconMenuList());

dropPopMenu.show(view);

}

private ListgetIconMenuList() {

Listlist = new ArrayList<>();

list.add(new MenuItem(R.drawable.ic_honor_level1, 1, "选项1"));

list.add(new MenuItem(R.drawable.ic_honor_level2, 2, "选项2"));

list.add(new MenuItem(R.drawable.ic_honor_level3, 3, "选项3"));

return list;

}

android菜单键变成箭头,Android:DropPopMenu — 显示位置跟随操作按钮显示的带箭头的弹出菜单(转载,写的很好)...相关推荐

  1. Android自定义弹出菜单+动画实现

    看到网上一个Demo里面弹出菜单的动画效果很好看,自己就利用工作空余时间也写了一下.具体实现如下: 1 自定义一个显示Icon的ImageView,主要用来判断该ImageView是否需要放在父布局底 ...

  2. android菜单键选择图标,Android Design

    开发者文档 Action Bar "操作栏"对于 Android 应用来说是最重要的设计元素.它通常在应用运行的所有时间都待在屏幕顶部. 操作栏的主要目的是: 突出重要的操作 (例 ...

  3. 教你如何创建类似QQ的android弹出菜单

    热心推荐: Android  ListView两种长按弹出菜单方式 popupwindow实现弹出菜单效果 Android人才招聘--最新招聘 大家可能看到 android 的自带的系统菜单比较难看, ...

  4. [Android] 底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)

        这篇文章主要是自己研究如何对底部菜单进行布局,并简单的实现点击不同"按钮"实现图片切换和背景切换的功能,最后通过PopupWindows实现弹出菜单,点击不同按钮能实现不同 ...

  5. Android DialogFragment实现底部弹出菜单效果

    底部弹出式菜单, 可以使用PopupWindow来做,也可以用自定义View来做.当然这里采用DialogFragment来做. DialogFragment是3.0之后引入的,使用DialogFra ...

  6. Android 仿微信右上角点击加号弹出菜单

    今天在做仿微信点击右上角加号弹出菜单出现了一点问题,故记录下来 需要也能对你有用 先来看效果图: 欧克,上面的实现效果主要时使用PopupWindow实现的,其中有趣的知识点是1.点击加号按钮弹出菜单 ...

  7. android中点击加号动画,android animation之scale 缩放(仿微信加号弹出菜单的动画效果)...

    仿微信 +号 处理事件:弹出菜单的动画效果--缩放(反义词) 放大效果(缩小的代码只需将fromXScale和toXScale,:fromYScale和toYScale变换) android:inte ...

  8. 【转载】Android之用PopupWindow实现弹出菜单

    在使用UC-WebBrowser时,你会发现它的弹出菜单跟系统自带的菜单不一样.它实现更多菜单选项的显示和分栏.其实,它的本身是PopupWindow或者是AlertDialog对话框,在里面添加两个 ...

  9. Android开发——菜单(Menu)-——上下文菜单(ContextMenu)、 弹出菜单(PopupMenu)

    上下文菜单(ContextMenu) 长按某个view不放,就会在屏幕中间弹出ContextMenu. 一个Activity中间只可能有一个OptionMenu,但一个Activity中间有多个Vie ...

最新文章

  1. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、在折线图上为每个数据点添加日期数据标签
  2. caffe中mnist数据集的运行
  3. 剔除异常值栅格计算器_基于数据流的异常检测: Random Cut Forest
  4. 苏宁大数据怎么运营_数据驱动经营 苏宁大数据用户标签入选2019TOP100全球软件案例...
  5. 【项目管理】合同和采购
  6. Linux单用户下提示权限不够,Linux_/dev/null 权限不足,/dev/null文件设备的权限不对, - phpStudy...
  7. c语言第八章实验题答案,第八章实验报告
  8. ylbtech_dbs_article_五大主流数据库模型
  9. 【Vue】样式穿透 ::v-deep的具体使用
  10. centos系统安全设置
  11. TypeError: cannot unpack non-iterable int object查找指定文件夹下指定文件类型的数量
  12. Eclipse问题提示
  13. FS4100 锂电充电管理IC输入12V给8.4V充电IC
  14. 明光杂感之四:足球与情境觉知(上)
  15. android 闪屏动态界面,Android 实现闪屏
  16. php composer.phar install,解决composer.phar安装问题
  17. python坦克大战游戏_python实现简单坦克大战
  18. matlab中二维散点图,MATLAB实例:二维散点图
  19. 1.整理华子面经--1
  20. python调用海康威视工业相机SDK实现图片采集

热门文章

  1. centos限制IP登录
  2. springmvc事务管理详解
  3. 技术前沿与经典文章25:电磁波能量谜团:能量竟然不连续?
  4. 使用pywinauto获取微信群成员昵称
  5. 中国分离膜行业应用范围大,预计“十四五”期间中国膜技术产业仍将保持快速增长,市场前景广阔[图]
  6. 无麸质产品行业调研报告 - 市场现状分析与发展前景预测
  7. PS(photoshop)抠图(切图)必备快捷键及要
  8. c语言实训报告总结300字,社会实践报告或者心得300字.doc
  9. 【蓝桥杯集训100题】scratch摘苹果 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第21题
  10. ShowModal 关闭问题