怎么在底部菜单实现4个MenuItem在一行

 我来答
可以叫我表哥
2015-01-03 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
 系统自带的菜单栏缺陷:一个页面最多只能显示6个菜单项;不能设置menu的背景色和单击变成自己希望背景色;因为系统自带显示单一,所以那么就来自定义自己的菜单栏吧,让你的菜单栏更漂亮。

  3、核心代码:学会了这些你就可以摆脱系统单一的菜单栏了,那么你就可以随心所欲的写自己绚丽的菜单了。
  第一、自定义的menu其实没用到menu控件,完全是自定义的类似菜单那样的布局,menu.xml就免写了。
  第二、关键是前台代码:
  (1)自定义的菜单栏其实是当前按手机上的菜单键,弹出一个菜单窗口,当按手机上的退回键的时候,就让该窗口关闭,那怎么实现呢?

  首先,在onKeyDown里面捕获menu,找到所要弹出的窗口布局,
  public boolean onKeyDown(int keyCode, KeyEvent msg) {
  if(keyCode==KeyEvent.KEYCODE_MENU)
  {
  /通过View.inflate加载xml
  inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
  layout = inflater.inflate(R.layout.main,null);
  pop = new PopupWindow(layout,480,350);//获取PopupWindow对象并设置窗体的大小
  pop.showAtLocation(layout, Gravity.CENTER,20,470); //设置窗体的位置
  pop.showAsDropDown(layout); //弹出menu窗口

  其次:那怎么弹出窗口已经找到了,那怎么找到弹出窗口上的控件呢?如下代码:
  home=(LinearLayout)layout.findViewById(R.id.home);
  找到了弹出窗口id名为home的LinearLayout,找到了控件,那我们就可以对这些控件写事件了,
  可以对该LinearLayout设置背景,这里遇到一个问题,就是之前我们是可以用xml写代码直接控制
  LinearLayout单击时的背景颜色,当单击过后是另外一种颜色,但是通过inflate加载的xml,在xml上
  设置样式,根本就不起作用,这是自己总结出来的。
  那我们该怎么写”LinearLayout单击时的背景颜色,当单击过后是另外一种颜色“呢?代码如下:
  home.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View arg0) {
  // TODO Auto-generated method stub
  //单击时,可通过设置IsShow的boolean值,使得单击时是一种颜色,单击过后恢复单击前的颜色,不这么设置就会导致,当你单击了和单击后都会一直显示单击时的背景 色,不会有颜色变化。
  if(IsShow==true)
  {

  home.setBackgroundResource(R.drawable.tab_two_highlight);//变色

  //以下的背景色和和单击前颜色一样维持不变,是为了保持当单击一个LinearLayout的时候,其他的会变颜色,如果不这么写,会有一系列效果显示问题。
  publish.setBackgroundResource(R.drawable.tab_one_normal);
  change.setBackgroundResource(R.drawable.tab_one_normal);
  more.setBackgroundResource(R.drawable.tab_one_normal);
  IsShow=false;
  }
  //单击过后
  else
  {
  home.setBackgroundResource(R.drawable.tab_one_normal);
  publish.setBackgroundResource(R.drawable.tab_one_normal);
  change.setBackgroundResource(R.drawable.tab_one_normal);
  more.setBackgroundResource(R.drawable.tab_one_normal);

  IsShow=true;
  }
  }
  });
  转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式