Actionbarsherlock 简明教程

简介:

ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式。

 

对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice Cream Sandwich的自定义动作栏实现将自动围绕布局。能够让开发者轻松开发一款带动作栏(Action bar)的应用,并且适用于Android 2.x及其以上所有版本。

那既然项目很好很强大的话,怎么使用他了?

首先,出github上下载这个项目。相应的项目的地址是https://github.com/JakeWharton/ActionBarSherlock,他的官网是http://actionbarsherlock.com/,下载即可,现在的最新的版本是4.4.0.

下载好,就解压出来,有三个文件夹,其实library就是Android公共库的使用,也就是将一些共同的东西抽取出来,包括java文件,资源文件等。

 接着新建一个Android工程,然后右键选择properties,再选择Android,接着添加library进来,如下图所示:

 

1.修改项目的AndroidManifest.xml文件,将Android的Theme,也就主题改为如下:

android:theme=”@style/Theme.Sherlock.Light”  ,也就是使用ActionBarSherlock里的主题;

2.修改MainActivity.java文件,默认生成的MainActivity类是继承Activity的,现在将Activity修改成SherlockActivity;

3.修改menu文件夹下的main_menu.xml文件如下:


 <!-- actionbarsherlock 菜单 -->
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- custom 客户项目 -->
    <item android:id="@+id/menu_search" android:showAsAction="ifRoom"
        android:title="@string/action_label_search" android:actionViewClass="android.widget.SearchView" />

    <!-- icon 图标项目 -->
    <item android:id="@+id/menu_refresh" android:showAsAction="ifRoom"
        android:title="@string/action_label_refresh" android:icon="@drawable/ic_menu_refresh_holo_light" />

    <!-- icon + text  图标 文本-->
    <item android:id="@+id/menu_both" android:showAsAction="ifRoom|withText"
        android:title="@string/action_label_both" android:icon="@drawable/ic_menu_star_holo_light" />

    <!-- text 文本内容-->
    <item android:id="@+id/menu_text" android:showAsAction="ifRoom"
        android:title="@string/action_label_text" />

    <item android:id="@+id/menu_logo" android:showAsAction="ifRoom"
        android:checkable="true" android:checked="false" android:title="@string/action_label_logo" />

    <item android:id="@+id/menu_up" android:showAsAction="ifRoom"
        android:checkable="true" android:checked="false" android:title="@string/action_label_up" />

    <!-- Navigation submenu 导航的子菜单 -->
    <item android:id="@+id/menu_nav" android:title="@string/action_label_nav">
        <menu>
            <group android:id="@+id/menu_nav_group"
                android:checkableBehavior="single">
                
                <item android:id="@+id/menu_nav_tabs" android:title="@string/action_label_nav_tabs" android:checked="true" />

                <item android:id="@+id/menu_nav_drop_down" android:title="@string/action_label_nav_drop_down" />

                <item android:id="@+id/menu_nav_label" android:title="@string/action_label_nav_label" />
            </group>
        </menu>
    </item>

    <!-- action bar background submenu  背景子菜单层级关系-->
    <item android:id="@+id/menu_bak" android:title="@string/action_label_bak">
        <menu>
            <group android:id="@+id/menu_bak_group"
                android:checkableBehavior="single">
                
                <item android:id="@+id/menu_bak_none" android:title="@string/action_label_bak_none" android:checked="true" />

                <item android:id="@+id/menu_bak_gradient" android:title="@string/action_label_bak_gradient" />

                <!--<item android:id="@+id/menu_bak_9_patch" android:title="@string/action_label_image" />-->
            </group>
        </menu>
    </item>

</menu>

要使ActionBar显示menu按钮,得重写MainActivity中的onCreateOptionsMenu方法,相应源代码如下:


getSupportMenuInflater().inflate(R.menu.main_menu, menu);

        // set up a listener for the refresh item
        final MenuItem refresh = (MenuItem) menu.findItem(R.id.menu_refresh);
        refresh.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            // on selecting show progress spinner for 1s
            public boolean onMenuItemClick(MenuItem item) {
                // item.setActionView(R.layout.progress_action);
                handler.postDelayed(new Runnable() {
                    public void run() {
                        refresh.setActionView(null);
                    }
                }, 1000);
                return false;
            }
        });
        return super.onCreateOptionsMenu(menu);

通过观察,我们可以清晰的观察出来,通过某个menuItem 点击后,重新加载相应的视图。

其运行的效果如下:

这就是Actionbarsherlock 简明教程,恳请大家斧正。


目录
相关文章
|
机器学习/深度学习 并行计算 计算机视觉
YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)
YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)
12557 1
YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)
|
人工智能 关系型数据库 分布式数据库
客户说|哔哩哔哩基于阿里云PolarDB与千问大模型构建全域内容洞察新框架
哔哩哔哩联合阿里云 PolarDB for AI,构建“大模型+小模型”协同的全域内容洞察体系,基于去标识化公开互动数据,实现视频、评论等内容的结构化分析,精准识别品牌、类目、用户反馈属性,助力营销效果量化与策略优化。
|
8月前
|
人工智能 JavaScript 搜索推荐
阿里云/本地部署 OpenClaw 喂饭级步骤流程:配置免费大模型API+5400个Skill库分享及常见问题
OpenClaw作为一款兼具交互性与拓展性的AI助理,其核心价值在于拥有覆盖生产力、开发、生活、娱乐等领域的5400+技能生态系统ClawHub,能通过丰富的技能拓展实现个性化的AI使用体验。2026年新版本对多平台部署做了深度优化,同时完成了与阿里云百炼大模型的适配,新手也能实现零基础在阿里云、MacOS、Linux、Windows11等环境下的本地部署,同时可免费配置阿里云百炼API实现大模型能力调用。本文将详细讲解全平台部署流程、API配置方法、常见问题解答,并对ClawHub中高价值核心技能进行实操解析,让使用者充分发挥OpenClaw的功能价值。
2678 1
|
8月前
|
存储 人工智能 Linux
【保姆级教程】OpenClaw 自定义 Skill开发指南:阿里云/本地部署+7步零代码打造自动化工具SKill+
“不用写一行代码,聊天就能让OpenClaw自动干活?”——这是参考文章作者沈剑分享的核心惊喜。作为OpenClaw资深用户,他通过7个关键步骤,仅用对话就打造出“知识星球自动点赞”Skill,实现每天8:30定时登录、筛选前一天帖子、智能点赞(已点赞跳过)的全流程自动化,还包含异常处理、配置隔离、容错重试等企业级特性。
4527 4
|
8月前
|
SQL 人工智能 自然语言处理
别让RAG成为“人工智障”:用Agent Skills做知识库检索,究竟强在哪?
本文剖析传统RAG的三大痛点:检索失误即满盘皆输、长上下文导致信息淹没、静态流程无法适配动态问题;对比引入Anthropic Agent Skills框架的新范式——具备规划、路由与反思能力的“AI研究员”,支持多技能协同、可解释推理与自适应重试。实测显示其在复杂知识任务中相关性、深度与满意度显著提升。
|
9月前
|
人工智能 自然语言处理 API
OpenClaw(Clawdbot)零基础部署指南+OpenClaw Skills 官方技能解析,1条命令解锁全能AI
OpenClaw的核心魅力在于其开放的技能生态——ClawHub上数千款官方Skills覆盖办公、生活、开发、智能家居等30+领域,让AI从“聊天工具”升级为“全能执行者”。而阿里云的一键部署方案,更让零基础用户无需复杂配置,20分钟即可搭建稳定运行环境,再通过简单命令安装官方Skills,轻松实现密码管理、笔记同步、邮件处理、视频编辑等多样化需求。
2348 10
|
开发框架 分布式计算 前端开发
ArkUI 介绍
【10月更文挑战第12天】
1392 10

热门文章

最新文章