在使用AppCompat

时间:2015-05-11 17:16:37

标签: android android-actionbar android-appcompat

我有一个在Android 2.3及更高版本上运行的应用程序。

最近,我正按照What are the common issues when migrating from ActionBarSherlock to ActionBarCompat?

的指南将其从SherlockActionBar迁移到AppCompat。

这是我到目前为止所做的。

升级SDK版本

更改SDK
<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="21" />

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="22" />

主题升级

更改主题
Theme.Sherlock.Light.DarkActionBar

Theme.AppCompat.Light.DarkActionBar

代码更新

遵循What are the common issues when migrating from ActionBarSherlock to ActionBarCompat?的代码更改指南。

注意,我仍然坚持ActionBar而不是Toolbar。最后,我将代码移到Toolbar。由于迁移是一个巨大的项目。我宁愿一点一点地完成它。

我的期望是

  1. 在Android 2.3上运行到Android 4的应用程序,应该有老式的全息设计。我希望应用程序看起来与使用SherlockActionBar构建的应用程序相同。
  2. 在Android 5+上运行的应用程序将采用新材料设计。
  3. 然而,这里的应用程序是如何在&amp;迁移后,为2.3 App。

    迁移前

    enter image description here

    enter image description here

    迁移后

    enter image description here

    enter image description here

    似乎在迁移之后,我可以观察到

    1. 操作栏高度更高。
    2. 确定取消按钮的对话框已从3D更改为Material flat。
    3. 我想知道,当我们使用最新的SDK 22作为目标构建针对AppCompat时,旧应用程序(运行在2.3到4+以上的应用程序)应该是正确的期望吗?它们应该看起来像Material app还是Holo app?

1 个答案:

答案 0 :(得分:1)

来自AppCompat的Support Library Features部分:

  

此库添加了对Action Bar用户界面设计模式的支持。该库包括对材料设计用户界面实现的支持。

所以你看到的是预期的行为 - AppCompat旨在将ActionBar和Material带到所有具有API 7及更高版本的设备。

在AppCompat第21版和Android Lollipop(API 21)一起发布之前,AppCompat确实提供了一个带有Holo主题的ActionBar。但是,它从未设计过其他组件,只有ActionBar本身。