脚本宝典收集整理的这篇文章主要介绍了Android工具箱之迁移到AppCompat,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个系列,我们将其命名为工具箱,如果你还没有看之前的文章:
概述
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
注意:主题的变更。你需要将之前的主题替换为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,请注明来意。