Android实现顶部导航菜单左右滑动效果

2019-12-10 17:53:16刘景俊

上例代码只是初始化菜单效果,我是使用TextView做为每一项菜单,当然还要给每一项菜单设置事件,事件代码如下:

 // 单个菜单事件 
 OnClickListener SlideMenuOnClickListener = new OnClickListener() {
 
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 String menuTag = v.getTag().toString();
 
 if(v.isClickable()){
 textView = (TextView)v;
 Log.i("SlideMenu", 
  "width:" + textView.getWidth() + 
  "height:" + textView.getHeight());

 textView.setBackgroundResource(R.drawable.menu_bg);
 
 for(int i = 0;i < menuList.size();i++){
  if(!menuTag.equals(menuList.get(i).getText())){
  menuList.get(i).setBackgroundDrawable(null);
  }
 }
 
 // 点击菜单时改变内容
 slideMenuOnChange(menuTag);
 }
 }
 };

上面代码中的for循环是为了清除其它菜单项的背景,slideMenuOnChange(menuTag)方法是为了显示下面的内容。该方法中代码如下:

 // 点击时改内容 
 private void slideMenuOnChange(String menuTag){
 LayoutInflater inflater = activity.getLayoutInflater();
 ViewGroup llc = (ViewGroup)activity.findViewById(R.id.linearLayoutContent);
 llc.removeAllViews();

 if(menuTag.equals(SlideMenuUtil.ITEM_MOBILE)){
 llc.addView(inflater.inflate(R.layout.item_mobile, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_WEB)){
 llc.addView(inflater.inflate(R.layout.item_web, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_CLOUD)){
 llc.addView(inflater.inflate(R.layout.item_cloud, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_DATABASE)){
 llc.addView(inflater.inflate(R.layout.item_database, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_EMBED)){
 llc.addView(inflater.inflate(R.layout.item_embed, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_SERVER)){
 llc.addView(inflater.inflate(R.layout.item_server, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_DOTNET)){
 llc.addView(inflater.inflate(R.layout.item_dotnet, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_JAVA)){
 llc.addView(inflater.inflate(R.layout.item_java, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_SAFE)){
 llc.addView(inflater.inflate(R.layout.item_safe, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_DOMAIN)){
 llc.addView(inflater.inflate(R.layout.item_domain, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_RESEASRCH)){
 llc.addView(inflater.inflate(R.layout.item_research, null));
 }else if(menuTag.equals(SlideMenuUtil.ITEM_MANAGE)){
 llc.addView(inflater.inflate(R.layout.item_manage, null));
 }
 }