• 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     }

    实现效果:

    生如夏花之绚烂,死如秋叶之静美。
  • 相关阅读:
    代理模式第一篇
    命令模式第二篇
    windows service 定时
    postman之asp.net webapi
    qq第三方登录
    core2.1下的identity 汉化
    asp.net core2.0里的Nlog
    Unable to create an object of type 'ApplicationDbContext'.
    identity使用mysql
    二进制位运算解决状态值
  • 原文地址:https://www.cnblogs.com/joyblabla/p/4650357.html
Copyright © 2020-2023  润新知