zoukankan      html  css  js  c++  java
  • Android 实现ActionBar定制

    我们在使用Android手机时,经常发现应用中的ActionBar和我们平时使用的ActionBar相差非常大。简单的说就是,其他应用的 ActionBar为什么那么绚丽,自己应用的ActionBar就那么挫呢?最近有时间就仔细研究了一下关于ActionBar的相关问题。

    首先我们来看一下之前所说的“高大上”的ActionBar的效果图:

    查阅了Android文档以及ActionBar的实现源码,发现ActionBar是可以定制的(PS:Google还是想的非常周到,不愧为大神级别的程序员),看到这儿大家对ActionBar的神秘面纱已经揭晓了吧,接下来我们就来看看具体的怎么实现的。

        package com.jony.actionbarccustom;  
          
        import android.app.ActionBar;  
        import android.app.Activity;  
        import android.os.Bundle;  
        import android.view.Menu;  
        import android.view.MenuItem;  
        import android.view.View;  
        import android.view.View.OnClickListener;  
        import android.widget.Toast;  
          
        public class MainActivity extends Activity {  
          
            @Override  
            protected void onCreate(Bundle savedInstanceState) {  
                super.onCreate(savedInstanceState);  
                setContentView(R.layout.activity_main);  
                //自定义ActionBar  
                final ActionBar actionBar = getActionBar();  
                actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);  
                actionBar.setCustomView(R.layout.actionbar);//自定义ActionBar布局  
                actionBar.getCustomView().setOnClickListener(new OnClickListener() {//监听事件  
                    @Override  
                    public void onClick(View arg0) {  
                        switch (arg0.getId()) {  
                        case R.id.back:  
                            showToast(R.string.finish);  
                            finish();  
                            break;  
                        default:  
                            break;  
                        }  
                    }  
                });  
            }  
          
            @Override  
            public boolean onCreateOptionsMenu(Menu menu) {  
                // Inflate the menu; this adds items to the action bar if it is present.  
                getMenuInflater().inflate(R.menu.actionbar_menu, menu);  
                //使用代码来动态控制MenuItem的显示状态 or XML定义MenuItem的显示状态   
        /*        MenuItem share = menu.findItem(R.id.share); 
                MenuItem undo = menu.findItem(R.id.undo); 
                MenuItem redo = menu.findItem(R.id.redo); 
                MenuItem save = menu.findItem(R.id.save); 
                share.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
                undo.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
                redo.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
                save.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);*/  
                return true;  
            }  
          
            @Override  
            public boolean onOptionsItemSelected(MenuItem item) {  
                switch (item.getItemId()) {  
                case R.id.undo:  
                    showToast(R.string.undo);  
                    break;  
                case R.id.redo:  
                    showToast(R.string.redo);  
                    break;  
                case R.id.save:  
                    showToast(R.string.save);  
                    break;  
                case R.id.share:  
                    showToast(R.string.share);  
                    break;  
                default:  
                    break;  
                }  
                return super.onOptionsItemSelected(item);  
            }  
          
            private void showToast(int msg){  
                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();  
            }  
        }  

    好了,具体的代码比较简单就不再阐述了,看一下效果图:

  • 相关阅读:
    React Native 开发豆瓣评分(三)集成 Redux
    React Native 开发豆瓣评分(二)路由配置
    React Native 开发豆瓣评分(一)环境搭建&配置模拟器
    VSCode 搭建 React Native 环境
    webpack4 + ejs 构建多页应用
    react-native 沉浸式状态栏
    react-native——tab配置及跳转
    uni-app 入门之 nvue (weex) 爬坑记
    javascript中bind()、call()、apply()的使用
    mysql数据库中文乱码配置文件解决以及常见mysql命令
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4543260.html
Copyright © 2011-2022 走看看