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();  
            }  
        }  

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

  • 相关阅读:
    数据结构-树与二叉树-思维导图
    The last packet successfully received from the server was 2,272 milliseconds ago. The last packet sent successfully to the server was 2,258 milliseconds ago.
    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property
    redis学习笔记
    AJAX校验注册用户名是否存在
    AJAX学习笔记
    JSON学习笔记
    JQuery基础知识学习笔记
    Filter、Listener学习笔记
    三层架构学习笔记
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4543260.html
Copyright © 2011-2022 走看看