继承LinearLayout自定义左侧菜单
public class LeftMenuView extends LinearLayout {
LinkedHashMap<Integer,String> map=new LinkedHashMap<>();
public LeftMenuView(Context context) {
super(context);
addView(context);
}
public LeftMenuView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
addView(context);
}
public LeftMenuView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
addView(context);
}
private void addView(final Context mContext) {
map.put(R.drawable.ico_left_menu_cashier,"收银");
map.put(R.drawable.ico_left_menu_order,"订单");
map.put(R.drawable.ico_left_menu_after_sales,"售后");
map.put(R.drawable.ico_left_menu_goods,"商品");
map.put(R.drawable.ico_left_menu_setting,"设置");
for (final Map.Entry<Integer, String> entry : map.entrySet()) {
TextView tvName=new TextView(mContext);
View viewLine=new View(mContext);
addView(tvName);
addView(viewLine);
LinearLayout.LayoutParams tvLayoutParams = (LayoutParams) tvName.getLayoutParams();
LinearLayout.LayoutParams viewLayoutParams = (LayoutParams) viewLine.getLayoutParams();
tvLayoutParams.width=LayoutParams.WRAP_CONTENT;
tvLayoutParams.height=getResources().getDimensionPixelOffset(R.dimen.left_menu_tv_heigth);
tvLayoutParams.gravity=Gravity.CENTER;
tvName.setText(entry.getValue());
tvName.setTag(entry.getKey());
tvName.setTextSize(getResources().getDimension(R.dimen.textsize_10));
tvName.setTextColor(ContextCompat.getColor(mContext,R.color.common_blue));
tvName.setGravity(Gravity.CENTER);
Drawable drawableLeft=ContextCompat.getDrawable(mContext,entry.getKey());
drawableLeft.setBounds(0, 0, drawableLeft.getMinimumWidth(), drawableLeft.getMinimumHeight());
tvName.setCompoundDrawables(drawableLeft,null,null,null);
tvName.setCompoundDrawablePadding(getResources().getDimensionPixelSize(R.dimen._10dp));
viewLayoutParams.width= LayoutParams.MATCH_PARENT;
viewLayoutParams.height=getResources().getDimensionPixelOffset(R.dimen.common_margin_super_small);
viewLine.setBackgroundColor(ContextCompat.getColor(mContext,R.color.divider_line_grey_color));
tvName.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//listener.leftClick();
int drawableId=Integer.valueOf(v.getTag().toString());
if(drawableId==R.drawable.ico_left_menu_cashier){
mContext.startActivity(new Intent(mContext, MainActivity.class));
}else if(drawableId==R.drawable.ico_left_menu_order){
}else if(drawableId==R.drawable.ico_left_menu_after_sales){
}else if(drawableId==R.drawable.ico_left_menu_goods){
mContext.startActivity(new Intent(mContext, GoodsMessageActivity.class));
}else if(drawableId==R.drawable.ico_left_menu_setting){
}
}
});
tvName.setLayoutParams(tvLayoutParams);
viewLine.setLayoutParams(viewLayoutParams);
}
}
//自定义的顶部ActionBar的点击监听;
private LeftMenuClickListener listener;
//点击事件的监听接口
public interface LeftMenuClickListener {
void leftClick();
void rightClick();
}
//提供activity调用的方法,类似于Button类的setOnClickListener(OnClickListener listener)
//传入具体实现方法
public void setOnTopbarClickListener(LeftMenuClickListener listener){
this.listener=listener;
}
}
使用方法
<com.freexiaoyu.app.widget.LeftMenuView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/linear_leftmenu"
android:layout_width="220.0dip"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="@color/white"
android:orientation="vertical" />
继承LinearLayout自定义左侧菜单的更多相关文章
- SharePoint开发 - 自定义导航菜单(一)菜单声明与配置
博客地址 http://blog.csdn.net/foxdave 本篇描述自定义sharepoint菜单的一种方式,自定义菜单适用于一些门户等需求的网站 自定义的菜单有自己的数据源,可以是数据表,可 ...
- 3.Node.js 自定义微信菜单
文章目录: 1.Node.js 接入微信公众平台开发 2.Node.js access_token的获取.存储及更新 3.Node.js 自定义微信菜单 ...
- 使用layui-tree美化左侧菜单,点击生成tab选项
layui-tree美化左侧菜单 html <div class="layui-side layui-bg-black"> <div class="la ...
- React+Ant Design设置左侧菜单导航路由的显示与隐藏(与权限无关)
最近在学习react时,用到了很流行的UI框架Ant Design,也了解了一下Ant Design Pro,发现它们都有导航组件,Ant Design框架的导航菜单在这里,Ant Design Pr ...
- 阻止右键菜单(阻止默认事件)&&跟随鼠标移动(大图展示)&&自定义右键菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- C# WPF 左侧菜单右侧内容布局效果实现
原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换. wpf实现的话,我的办法是用一个tabcon ...
- SPA项目开发之首页导航+左侧菜单
Mock.js: 前后端分离之后,前端迫切需要一种机制,不再需要依赖后端接口开发,而mockjs就可以做到这一点 Mock.js是一个模拟数据的生成器,用来帮助前端调试开发.进行前后端的原型分离以及用 ...
- ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...
- SharePoint 2013 自定义扩展菜单
在对SharePoint进行开发或者功能扩展的时候,经常需要对一些默认的菜单进行扩展,以使我们开发的东西更适合SharePoint本身的样式.SharePoint的各种功能菜单,像网站设置.Ribbo ...
随机推荐
- Mybatis 中获取添加的自增主键ID(针对mysql)
分享一篇博客,主要就是针对在我们使用SSM的时候,在.xml中获取<insert></insert> 时的自增主键Id,由于好久没有,这个时候使用,有点生疏,就在这里写个笔记, ...
- SVG分组和引用
这是我在掘金中的文章链接地址:https://juejin.im/post/5bcfe0fa51882577e3760467
- 《Java编程思想》读书笔记-赋值操作符
在最底层,Java中的数据是通过使用操作符来操作的.接下来我们逐一认识一些操作符. 怎么运用操作符 操作符接受一个或多个参数,并生成一个新值. 基本操作符 赋值操作符 符号:= 作用:取右边的值,把它 ...
- c++学习中的疑问
1.关于iostream头文件中的cout对象没有包含对string的<<操作符重载函数 测试代码: #include<iostream> using namespace st ...
- 20155219付颖卓《网络对抗》Exp6 信息搜集与漏洞扫描
基础问题回答 1.哪些组织负责DNS,IP的管理? 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管理. 全球根域名服务器:绝大多数在欧洲和北美(全球13台 ...
- MySQL 对分组后的同类数据进行拼接字符串
MySQL 对分组后的同类数据进行拼接字符串 写后台方法时遇到个问题,需要将表内同一订单号的操作记录流水进行简单拼接输出,不想取出来再操作,找了个mysql的方法直接操作 //group_concat ...
- HTTPS和HTTP(加密知识)
什么是HTTPS? 基于安全套接字层的超文本传输协议(HTTP over SSL),一个Netscape开发的Web协议.HTTPS在HTTP应用层的基础上使用安全套接字层(或者升级版传输层安全,Tr ...
- js vue 请求
. Vue 的 GET 请求 var vm = new Vue({ el: '#app', data: { resp: {}, api_url: '/index', }, methods: { get ...
- 一张图看懂AI、机器学习和深度学习的区别
AI(人工智能)是未来,是科幻小说,是我们日常生活的一部分.所有论断都是正确的,只是要看你所谈到的AI到底是什么. 例如,当谷歌DeepMind开发的AlphaGo程序打败韩国职业围棋高手Lee Se ...
- 用shell脚本创建sqlite表并添加sql语句--通用
重要使用的是EOF的功能,亲测和!功能一致:下面是测试代码 #!/bin/bash val=`ls`for v in ${val} do if [ ${v} == "test.db" ...