我正在构建一个应该能够在 Android 2.1 及更高版本上运行的 Android 应用程序。minSdkVersion
设置为7,targetSdkVersion
设置为14。为了拥有 ActionBar 功能,我正在使用 ActionBarSherlock 库,并根据需要将应用程序的主题设置为Theme.Sherlock
(等)的派生类。
除了提供一个 ActionBar,我注意到当我在 Honeycomb/ICS 设备上运行应用程序时,其他一些小部件和对话框现在具有不同的(即 Holo)外观。我想要一个 ActionBar 但保持正常的非 Holo Android 主题 - Holo 样式与应用程序的其余部分不匹配。尤其是 EditText 视图看起来明显不同。
我看到 ActionBarSherlock 在values-11 (Honeycomb) 和values-14 (ICS) 中定义了一些自定义主题,它们继承自Theme.Holo。values-14中还有自定义样式,将 ABS 样式映射到原生样式(因为原生 ActionBar 用于 ICS+)。
我发现我至少必须做以下事情:
禁用values-11和values-14的自定义主题- 这会阻止 Holo 小部件/对话框出现。
禁用 ICS+ 的 ActionBar 的本机实现 - 这会阻止 ICS 上的崩溃,因为它依赖于作为 Holo 主题的一部分提供的本机 ActionBar。这需要修改库。
禁用values-14的自定义样式- 这与兼容性 ActionBar 的外观/样式混为一谈。
我不确定是否还有其他我遗漏的问题。有没有人找到一种在不修改库的情况下将非 Holo Android 主题与 ActionBarSherlock 一起使用的好方法?在ICS及以上使用兼容性ActionBar有什么问题吗?