你的位置:首页 > 操作系统

[操作系统]Android ActionBar以及menu的代码设置样式


menu部分

 1 <??> 2 <menu ="http://schemas.android.com/apk/res/android" > 3    4   <item android:id="@+id/action_search" 5     android:title="搜索1" 6     android:orderInCategory="100" 7     android:showAsAction="always"/> 8    9   <item android:id="@+id/action_search2"10     android:actionViewClass="android.widget.SearchView"11     android:showAsAction="ifRoom|collapseActionView"12      android:orderInCategory="100"13     android:title="搜索2"/>14   15   16   <item android:id="@+id/action_share"17     android:title="分享"18     android:orderInCategory="100"19     android:icon="@drawable/ic_action_favor_normal"20     android:showAsAction="never"/>21   <item android:id="@+id/action_collection"22     android:title="收藏"23     android:orderInCategory="100"24     android:showAsAction="never"/>25   <item android:id="@+id/action_font"26     android:title="字体大小"27     android:orderInCategory="100"28     android:showAsAction="never"/>29 </menu>

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

 1 /** 2    * 显示overflower菜单图标 3   */ 4   @Override 5   public boolean onMenuOpened(int featureId, Menu menu) {  6     if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {  7       if (menu.getClass().getSimpleName().equals("MenuBuilder")) {  8         try {  9           Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); 10           m.setAccessible(true); 11           m.invoke(menu, true); 12         } catch (Exception e) { 13         } 14       } 15     } 16     return super.onMenuOpened(featureId, menu); 17   } 

 

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

 1   /** 2    * menu菜单点击操作的监听事件 3   */ 4   @Override 5   public boolean onOptionsItemSelected(MenuItem item) { 6     switch(item.getItemId()){ 7     case android.R.id.home: 8       //finish(); 9       super.onBackPressed();10       break;11     case R.id.action_add:12       Toast.makeText(this, "添加", Toast.LENGTH_SHORT).show();13       break;14     }15     return super.onOptionsItemSelected(item);16   }

 

自定义ActionBar

 1 /** 2    * 初始化 ActionBar内容 3    * */ 4   private ActionBar actionBar; 5   private void initActionBar(){ 6     actionBar=super.getActionBar(); 7      actionBar.show(); 8      9     //显示Home区域10     actionBar.setDisplayShowHomeEnabled(true);11     //设置home区域回退按钮12     actionBar.setDisplayHomeAsUpEnabled(true);13      actionBar.setHomeAsUpIndicator(R.drawable.back_move_details_normal);14     15     //不显示Home区域标题16     actionBar.setDisplayShowTitleEnabled(true);//17     actionBar.setTitle("新闻");//设置title18     //不显示Logo图片19     actionBar.setDisplayUseLogoEnabled(false);//     20     //去除home区域的Icon图标【将icon颜色设置为透明】21     Drawable colorDrawable=new 22          ColorDrawable(android.R.color.transparent);23      actionBar.setIcon(colorDrawable);24     25     //自定义区域26     actionBar.setDisplayShowCustomEnabled(true);27     TextView tvTitle=new TextView(this);//this,当前承载的28     tvTitle.setText("新闻信息");//tvTitle.setId();29     tvTitle.setTextSize(25);30     int colorVal=getResources().getColor(R.color.white);31     tvTitle.setTextColor(colorVal);//tvTitle.setTextColor(Color.WHITE);32      tvTitle.setGravity(Gravity.CENTER);33     34     LayoutParams layoutParams=35         new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 36      actionBar.setCustomView(tvTitle,layoutParams);37     38   }

实现效果: