欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中ActionBar以及menu的代码设置样式

程序员文章站 2022-06-29 09:06:36
menu部分xml代码

menu部分xml代码

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
  
  <item android:id="@+id/action_search"
   android:title="搜索1"
   android:orderincategory="100"
   android:showasaction="always"/>
  
  <item android:id="@+id/action_search2"
    android:actionviewclass="android.widget.searchview"
    android:showasaction="ifroom|collapseactionview"
    android:orderincategory="100"
    android:title="搜索2"/>
  
  
  <item android:id="@+id/action_share"
    android:title="分享"
    android:orderincategory="100"
    android:icon="@drawable/ic_action_favor_normal"
    android:showasaction="never"/>
  <item android:id="@+id/action_collection"
    android:title="收藏"
    android:orderincategory="100"
    android:showasaction="never"/>
  <item android:id="@+id/action_font"
    android:title="字体大小"
    android:orderincategory="100"
    android:showasaction="never"/>
</menu>

menu中overflower菜单图标显示实现【重写onmenuopened方法,使用反射原理】

/**
   * 显示overflower菜单图标
   */
  @override
  public boolean onmenuopened(int featureid, menu menu) { 
    if (featureid == window.feature_action_bar && menu != null) { 
      if (menu.getclass().getsimplename().equals("menubuilder")) { 
        try { 
          method m = menu.getclass().getdeclaredmethod("setoptionaliconsvisible", boolean.type); 
          m.setaccessible(true); 
          m.invoke(menu, true); 
        } catch (exception e) { 
        } 
      } 
    } 
    return super.onmenuopened(featureid, menu); 
  } 
 

针对menu菜单中选项的事件监听操作

 /**
 * menu菜单点击操作的监听事件
 */
 @override
 public boolean onoptionsitemselected(menuitem item) {
   switch(item.getitemid()){
   case android.r.id.home:
     //finish();
     super.onbackpressed();
     break;
   case r.id.action_add:
     toast.maketext(this, "添加", toast.length_short).show();
     break;
   }
   return super.onoptionsitemselected(item);
 }

自定义actionbar

/**
  * 初始化 actionbar内容
  * */
 private actionbar actionbar;
 private void initactionbar(){
    actionbar=super.getactionbar();
    actionbar.show();
    
    //显示home区域
    actionbar.setdisplayshowhomeenabled(true);
    //设置home区域回退按钮
    actionbar.setdisplayhomeasupenabled(true);
    actionbar.sethomeasupindicator(r.drawable.back_move_details_normal);
    
    //不显示home区域标题
    actionbar.setdisplayshowtitleenabled(true);//
    actionbar.settitle("新闻");//设置title
    //不显示logo图片
    actionbar.setdisplayuselogoenabled(false);//     
    //去除home区域的icon图标【将icon颜色设置为透明】
    drawable colordrawable=new 
        colordrawable(android.r.color.transparent);
    actionbar.seticon(colordrawable);
    
    //自定义区域
    actionbar.setdisplayshowcustomenabled(true);
    textview tvtitle=new textview(this);//this,当前承载的
    tvtitle.settext("新闻信息");//tvtitle.setid();
    tvtitle.settextsize(25);
    int colorval=getresources().getcolor(r.color.white);
    tvtitle.settextcolor(colorval);//tvtitle.settextcolor(color.white);
    tvtitle.setgravity(gravity.center);
    
    layoutparams layoutparams=
        new layoutparams(layoutparams.match_parent, layoutparams.match_parent); 
    actionbar.setcustomview(tvtitle,layoutparams);
    
 }

实现效果:

Android中ActionBar以及menu的代码设置样式

以上所述就是本文的全部内容了,希望大家能够喜欢。