zoukankan      html  css  js  c++  java
  • 自定义底部菜单栏

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

    效果图片:自定义的底部菜单栏:

    未命名图片.png

     


    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;

    }

    }

    });

  • 相关阅读:
    前端CSS部分简单整理
    前端HTML部分简单整理
    Top Android App使用的组件
    使用DialogFragment创建对话框总结
    Rails常用命令
    developer.android.com笔记
    Google Maps API v2 Demo Tutorial
    Android学习的一些问题
    Android学习过程
    Beginning Android 4 Programming Book学习
  • 原文地址:https://www.cnblogs.com/zhwl/p/2186050.html
Copyright © 2011-2022 走看看