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

menu部分xml代码

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <menu xmlns:android="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("新闻");//设置title
18          //不显示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     }

实现效果:

生如夏花之绚烂,死如秋叶之静美。
原文地址:https://www.cnblogs.com/joyblabla/p/4650357.html