Android工具箱之迁移到AppCompat

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android工具箱之迁移到AppCompat脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

这是一个系列,我们将其命名为工具箱,如果你还没有看之前的文章

Android工具箱之Context解析

Android工具箱之文件目录

Android工具箱之组织你的代码文件

Android工具箱之理解app资源文件

Android工具箱之Activity生命周期

Android工具箱之Android 6.0权限管理

概述

AppCompat支持库提供了ActionBar和MATErial Design的实现,特别是针对AndROId 2.1 以上的设备可以使用Toolbar。

如果你在使用Android studio,那么你会发现该支持库是默认为你添加的。你可以检查下你的build.gradle文件:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
}

dePEndencies {
    compile 'com.android.support:appcompat-v7:23.1.0'
}

注意v7包默认包含了v4包,所以你不必再添加v4包的依赖申明。(这个错误,我也犯。。)

同时你应该注意到,当你的compileSdkVersion为22的时候,你需要使用appcompat-v7:22对应的版本。这一概念,我在Github的android项目快速导入AS已经有所介绍。

同时你也应该知道,当你将compileSdkVersion版本升级到23,对应的apache HTTP Client将不能使用。如果你需要在23中继续使用,在你的app的gradle文件中添加:

android {
    useLibrary 'org.apache.http.legacy'
}

升级项目

当你已经准备将你的项目的支持库迁移到appcompat,你需要做以下工作:

  • 将你的所有的activITy文件从继承activity改为继承AppCompatActivity。如果你有baseActivity,只需要更改baseActivity的继承就ok了。

  • 将你的所有的fragment改为继承android.support.v4.app.Fragment,getFragmentManager()改为getSupportFragmentManager()。

  • 将getActionBar()改为getSupportActionBar()

注意,如果你想将你的diaLOG也升级到appcompat:你需要
import android.app.AlertDialog -> import android.support.v7.app.AlertDialog

Android工具箱之迁移到AppCompat

注意:主题的变更。你需要将之前的主题替换为Theme.AppCompat等主题。

如果你想使用自定义actionbar,你需要申明:

<style name="AppTheme.NoActionBar">
      <item name="windowActionBar">false</item>
      <item name="windowNoTitle">true</item>
</style>

menu的改变

appCompat支持库不会把showAsAction当做Android默认属性:

-<;menu >"http://schemas.android.COM/apk/res/android">
+<menu >"http://schemas.android.com/apk/res/android" >"http://schemas.android.com/apk/res-auto">
 <item android:id="@+id/myMenuItem"
       android:title="@string/select"
      -android:showAsAction="ifRoom"
      +app:showAsAction="ifRoom"

如果你在使用类似seArchView:

+<menu >"http://schemas.android.com/apk/res/android" >"http://schemas.android.com/apk/res-auto">
 
     <item android:id="@+id/contentSearch"
           android:orderInCategory="2"
           android:title="@string/search"
          -android:showAsAction="ifRoom"
          -android:actionViewClass="android.widget.SearchView">
          +app:showAsAction="ifRoom"
          +app:actionViewClass="android.support.v7.widget.SearchView">
          

MenuItemCompat类

@override
  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
      inflater.inflate(R.menu.my_menu, menu);
      mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.contentSearch));
      

脚本宝典总结

以上是脚本宝典为你收集整理的Android工具箱之迁移到AppCompat全部内容,希望文章能够帮你解决Android工具箱之迁移到AppCompat所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。