zoukankan      html  css  js  c++  java
  • 告别ActionBarSherlock——Android.support包也能打造兼容2.x的ActionBar(1)

    http://www.bdqn.cn/news/201308/10625.shtml

    摘要: 告别ActionBarSherlock——android.support包也能打造兼容2.x的ActionBar(1)

    ActionBar是Android 3.0的产物 一直延伸到现在最新的4.3

    就个人而言 ActionBar相比传统的弹出式菜单 更加简洁

    但是ActionBar只有API 10以上(包括API 10)才能尝到

    于是有些大神便打造出了ActionBarSherlock,为2.x带来了一个兼容的ActionBar库

    在今年的Google I/O,谷歌终于打算把官方的兼容2.x的ActionBar库放出来给大家使用。

    现在我也分享一下使用的方法。

    大家可以通过SDK Manager更新Android Support Library到ver18来获得这个库

    更新后可以在 <sdk目录>/extras/android/support/v7 找到appcompat文件夹 这个里面就是兼容2.x的ActionBar的库

    或者手动下载:http://pan.baidu.com/share/link?shareid=3793697689&uk=1527727709

    导入库后

    需要在styles.xml更改主题为(一定要记得改 否则启动时会FC)

    [html]

    1

    2

    <!-- 这个是黑色主题 --> 

    <style name="AppBaseTheme" parent="Theme.AppCompat">

    [html]

    1

    2

    <!-- 这个是白色主题 --> 

    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">

    [html]

    1

    2

    <!-- 这个是白色主题带黑色ActionBar --> 

    <style name="AppBaseTheme"parent="Theme.AppCompat.Light.DarkActionBar">

    下面是代码示例(注意是public class XXXActivity extends ActionBarActivity,而不是extends Activity):

    [java]

    package com.example.testabc; 

        

    import android.os.Bundle; 

    import android.support.v4.view.MenuItemCompat; 

    import android.support.v7.app.ActionBarActivity; 

    import android.view.Menu; 

    import android.view.MenuItem; 

    import android.widget.Toast; 

         

    public class MainActivity extends ActionBarActivity { 

         

        @Override

        protected void onCreate(Bundle savedInstanceState) { 

            super.onCreate(savedInstanceState); 

            setContentView(R.layout.activity_main); 

        } 

         

        @Override

        public boolean onCreateOptionsMenu(Menu menu) { 

            MenuItemCompat.setShowAsAction( 

                    menu 

                    .add("No.1") 

                    .setIcon(android.R.drawable.ic_menu_rotate),  

                    MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 

            MenuItemCompat.setShowAsAction( 

                    menu 

                    .add("No.2") 

                    .setIcon(android.R.drawable.ic_menu_compass),  

                    MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 

            MenuItemCompat.setShowAsAction( 

                    menu 

                    .add("No.3") 

                    .setIcon(android.R.drawable.ic_menu_more),  

                    MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 

            return true; 

        } 

         

        @Override

        public boolean onOptionsItemSelected(MenuItem menu) { 

            if (menu.getTitle() == "No.1"){ 

                Toast.makeText(getApplicationContext(), "You clicked first button.", Toast.LENGTH_SHORT).show(); 

            } 

            if (menu.getTitle() == "No.2"){ 

                Toast.makeText(getApplicationContext(), "You clicked second button.", Toast.LENGTH_SHORT).show(); 

            } 

            if (menu.getTitle() == "No.3"){ 

                Toast.makeText(getApplicationContext(), "You clicked third button.", Toast.LENGTH_SHORT).show(); 

            } 

            return super.onOptionsItemSelected(menu); 

        } 

    }

    放效果图

    PS:有点纳闷的就是 Theme.Compat.Light 白色主题 在2.x和4.x上的显示效果不一样,不过其他那两个主题显示是正常的。

    可能还有朋友问我为什么2.x上的显示只有两个按钮,原因其实我屏幕太小了 第三个按钮被分到 弹出菜单了,要按menu键才能找到。

  • 相关阅读:
    《不完美的她》开播,网友:周公子对「白帽子」有点误会吧?
    【Web安全】浅谈缓存XSS漏洞
    十分钟教你轻松掌握「移动PE导出表」,快来学习!
    干货分享丨表哥带你学习导入表及导入表注入
    「原创」萌新也能看懂的ThinkPHP3.2.3漏洞分析
    精选好文丨简析对称加密、非对称加密和混合加密
    工程师成长道路语录(转)
    在线画UML图的工具
    6种有效的开发模型(转)
    空降经理人的挑战 (原创)
  • 原文地址:https://www.cnblogs.com/sxjzhjj/p/4047078.html
Copyright © 2011-2022 走看看