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自定义左侧菜单的更多相关文章

  1. SharePoint开发 - 自定义导航菜单(一)菜单声明与配置

    博客地址 http://blog.csdn.net/foxdave 本篇描述自定义sharepoint菜单的一种方式,自定义菜单适用于一些门户等需求的网站 自定义的菜单有自己的数据源,可以是数据表,可 ...

  2. 3.Node.js 自定义微信菜单

    文章目录:         1.Node.js 接入微信公众平台开发         2.Node.js access_token的获取.存储及更新         3.Node.js 自定义微信菜单 ...

  3. 使用layui-tree美化左侧菜单,点击生成tab选项

    layui-tree美化左侧菜单 html <div class="layui-side layui-bg-black"> <div class="la ...

  4. React+Ant Design设置左侧菜单导航路由的显示与隐藏(与权限无关)

    最近在学习react时,用到了很流行的UI框架Ant Design,也了解了一下Ant Design Pro,发现它们都有导航组件,Ant Design框架的导航菜单在这里,Ant Design Pr ...

  5. 阻止右键菜单(阻止默认事件)&&跟随鼠标移动(大图展示)&&自定义右键菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. C# WPF 左侧菜单右侧内容布局效果实现

    原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换. wpf实现的话,我的办法是用一个tabcon ...

  7. SPA项目开发之首页导航+左侧菜单

    Mock.js: 前后端分离之后,前端迫切需要一种机制,不再需要依赖后端接口开发,而mockjs就可以做到这一点 Mock.js是一个模拟数据的生成器,用来帮助前端调试开发.进行前后端的原型分离以及用 ...

  8. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  9. SharePoint 2013 自定义扩展菜单

    在对SharePoint进行开发或者功能扩展的时候,经常需要对一些默认的菜单进行扩展,以使我们开发的东西更适合SharePoint本身的样式.SharePoint的各种功能菜单,像网站设置.Ribbo ...

随机推荐

  1. c++ 第二章知识梳理

    2.1.c++语言概括 2.1.1)c++的产生 一个更好的c,由c演变而来 2.1.2)c++的特点 一是尽量兼容c,二是支持面向对象的方法.更安全,且简洁高效. 2.1.3~2.1.5 多数和C相 ...

  2. 正则表达式andJS内存空间详细图解

    http://www.runoob.com/js/js-regexp.html https://blog.csdn.net/pingfan592/article/details/55189622

  3. 大硬盘(大于2T)分区方法

    背景 在使用fdisk建立分区时,我们最大只能建立2TB大小的分区.如需建立超过2T的分区需要采用GPT磁盘模式.下文补充一下GPT和MBR的基础知识和分超过2T分区的方法. 基本概念 MBR 1.M ...

  4. Tajima's D

    Three ways to assess the nucleotide diversity (heterozygosity).The first is mean pairwise difference ...

  5. 常用的JSP内置对象(1)

    常用的JSP内置对象 request对象主要用于处理客户端请求 request对象的作用是与客户端交互,收集客户端的Form.Cookies.超链接,或者收集服务器端的环境变量. request对象常 ...

  6. 集合或数组转成String字符串

    1.将集合转成String字符串 String s=""; for (int i = 0; i < numList.size(); i++) { if (s=="& ...

  7. jmeter 报错Error in NonGUIDriver java.lang.IllegalArgumentException: Report generation requires csv output format, check 'jmeter.save.saveservice.output_format' property

    设置jmeter报个的时候报下面错 只要细心看问题就是把它jmeter.save.saveservice.output_format'的格式改为csv就对 这个属性是在jmeter.propertie ...

  8. 遇到短信轰炸,别人换ip调你的短信接口怎么办

    前端开发者很容易暴露自己的请求地址和参数,我们都知道,一个h5页面,按 F12 是可以看到页面的源码的,所以经常很多人会利用这一点恶意调取别人的接口. 我们公司出现了好多次短信接口被大量调用,导致一天 ...

  9. Python学习笔记,day3

    Python学习第三天 一.集合 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作: s = ...

  10. classic code review

    package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSe ...