ActionBarSherlock 3.x 到 4.0 迁移指南

ActionBarSherlock 3.x 到 4.0 迁移指南

ActionBarSherlock [DEPRECATED] Action bar implementation which uses the native action bar on Android 4.0+ and a custom implementation on pre-4.0 through a single API and theme. ActionBarSherlock 项目地址: https://gitcode.com/gh_mirrors/ac/ActionBarSherlock

前言

ActionBarSherlock 是一个让 Android 2.x 系统也能使用 ActionBar 功能的兼容库。本文详细讲解如何从 3.x 版本迁移到 4.0 版本,帮助开发者顺利完成升级过程。

迁移步骤概览

从 3.x 迁移到 4.0 版本主要涉及以下四个方面:

  1. Activity/Fragment 类变更
  2. 导入包路径调整
  3. 方法API变化
  4. 主题样式更新

1. Activity/Fragment 类变更

4.0 版本中所有相关 Activity 类都添加了 "Sherlock" 前缀,这种命名方式更清晰地表明了这些类的用途和继承关系。

主要变更类:

  • SherlockActivity 继承自 Activity
  • SherlockListActivity 继承自 ListActivity
  • SherlockFragmentActivity 继承自 FragmentActivity

这些类都位于 com.actionbarsherlock.app 包中。

Fragment 使用建议

当使用 SherlockFragmentActivity 时,建议配套使用以下 Fragment 类:

  • SherlockFragment
  • SherlockListFragment

这些 Fragment 类同样遵循了添加 "Sherlock" 前缀的命名规则。

2. 导入包路径调整

4.0 版本不再紧密依赖 Android 支持库,因此包路径从 android.support.v4 迁移到了更合适的 com.actionbarsherlock

需要特别注意的导入项:

  • com.actionbarsherlock.view.Menu
  • com.actionbarsherlock.view.MenuItem
  • com.actionbarsherlock.view.MenuInflater
  • com.actionbarsherlock.view.Window
  • com.actionbarsherlock.app.ActionBar

开发者需要检查并更新所有相关类的导入语句。

3. 方法API变化

4.0 版本 API 变化不大,主要有两个新增方法需要注意:

新增方法说明

  1. getSherlockActivity()
    在 Fragment 中使用,返回已转换为 SherlockFragmentActivity 的 Activity 实例。

  2. getSherlock()
    在 Activity 中使用,返回 ActionBarSherlock 接口实例,可用于以编程方式设置 Activity 的 UI 选项。

4. 主题样式更新

4.0 版本的主题系统更接近原生 ActionBar 的实现,使得创建自定义主题更加容易。

主题迁移要点

  1. 将所有以 'ab' 为前缀的主题属性移动到 action bar 样式中
  2. 将所有以 'am' 为前缀的主题属性移动到 action mode 样式中
  3. 现在主题必须同时包含带 'android' 命名空间和不带命名空间的属性

主题示例

<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="background">@drawable/bg_striped</item>
    <item name="android:background">@drawable/bg_striped</item>
    
    <item name="backgroundSplit">@drawable/bg_striped_split</item>
    <item name="android:backgroundSplit">@drawable/bg_striped_split</item>
</style>

常见问题与注意事项

  1. Home 图标默认禁用
    如果应用目标 API 级别为 14 或更高,Home 图标默认会被禁用。如需接收点击事件,需要调用 setHomeButtonEnabled(true) 来启用。点击事件的 ID 仍然是 android.R.id.home

  2. 列表导航使用
    使用列表导航时,请确保使用库提供的布局作为项目视图和下拉视图,并使用 ActionBar 的主题上下文。

  3. 兼容性考虑
    虽然 4.0 版本改进了许多实现细节,但仍需注意在低版本 Android 系统上的表现差异。

学习建议

为了更全面地掌握 ActionBarSherlock 4.0 的使用,建议开发者:

  1. 仔细研究示例代码,了解各种功能的正确实现方式
  2. 在实际项目中逐步应用迁移步骤
  3. 特别注意主题和样式的兼容性处理

通过以上步骤,开发者可以顺利完成从 3.x 到 4.0 版本的迁移,并充分利用新版库提供的改进功能。

ActionBarSherlock [DEPRECATED] Action bar implementation which uses the native action bar on Android 4.0+ and a custom implementation on pre-4.0 through a single API and theme. ActionBarSherlock 项目地址: https://gitcode.com/gh_mirrors/ac/ActionBarSherlock

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏赢安Simona

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值