android.support.v7库的配置—— 为什么跟别人的步骤一样你却配不好support.v7库?

为什么你配置不好support.v7库

其实搜索android.support.v7的配置,百度上会出来很多回答。但是按照教程上面走了,其实也配置不好support.v7库。这是为什么呢?其实不一定是教程错,也不一定是你跟错,而是教程太老了,和你的Android Studio版本相差太大。
现在(我写博客的日期是2020.3.1)Android Studio是默认使用androix的,引起导入support.v7库不起作用的根本原因是下面这两句话,但是现在很多博客根本没有提到这点。要配置support.v7库,必须将其注释(配置support.v7完整过程请往后看):
在这里插入图片描述
下面我们介绍两种遇到support.v7库报错的解决方法吧。

佛系做法——直接使用androidx

我们遇到support.v7库的情况通常分为两种:

  1. 在github之类的地方拷下来了别人的整个工程,其中包含support.v7库。这种情况直接打开工程等待项目Sync完成就行了(注意要联网,联网后Android Studio会帮我们自动下载很多需要的依赖)。
  2. 在教程、书本中读到和support.v7库相关的程序片段。这个其实也好办,直接把对应的support.v7库中的内容换成androidx中对应的内容就行了。具体的替换方法:
  • Java代码中,删除所有与v7相关的import项,然后四处Alt + Enter, 系统会给你自动androix中对应的import项。比如,删除本行:

    import android.support.v7.app.AppCompatActivity;
    

    Alt + Enter后系统会加上:

    import androidx.appcompat.app.AppCompatActivity;
    
  • xml代码中,也是同样的方法,替换。直接删除原有控件名称,再输入时,系统就会自动提示androidx中对应的控件。比如,我将support.v7库中的Toolbar控件直接粘贴到使用androidx的项目中,控件是灰色的,说明不能用。
    在这里插入图片描述
    删除原有的控件名(android.support.v7.widget.Toolbar),输入Toolbar,直接Enter选择系统提供的Toolbar控件。
    在这里插入图片描述
    变白了,说明现在的控件是正确的,得到了替换。
    在这里插入图片描述
    强烈推荐直接使用androidx中的控件替换v7库中的控件,反正v7有的anroidx都有,而且v7库已经比较老了。。。不过如果你一定要配置好v7库的话,那么请往下看吧。

注意:support.v7库中的控件所用函数会和androidx中稍有不同。

折腾做法——support.v7库的配置

我使用的Android Studio版本如图所示,最个版本的已经默认使用androidx中的控件了。下面我们来禁用androidx,配置support.v7。
在这里插入图片描述

  1. 首先新建一个项目,这里就叫做TestSupportV7吧。在这里插入图片描述
  2. 尝试在项目中import android.support.v7相关的库,失败,这个时候可以看到是不行的。
    在这里插入图片描述
  3. 找到app目录下的build.gradle,替换dependencies{}中的内容。
    在这里插入图片描述
    原始的dependencies{}中有很多和androidx相关的内容,我们将其删掉:
    在这里插入图片描述
    用下面的内容替换:(顺带提一下,大家在网上可能会看到有用compile而不是implementation的,这可能是早期的设置,现在没有用compile的了)
	implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

替换后内容如下,记得点击“Sync Now”更新依赖。
在这里插入图片描述
4. 这时候会发现support.v7库那一行标红。这是因为support.v7库能够支持的最高的sdkVersion为28,而我们现在项目中的是29。将build.gradle中android{}标签中的29都换成28即可。
在这里插入图片描述
5. 很多教程进行到上一步就停止了,但是我们尝试在Activity中导入support.v7库,系统仍然不会有自动提示,说明实际上配置没有成功。
在这里插入图片描述
6. 这时候就用到我们一开始说的能够根本原因——现在的Android Studio是默认使用androidx的,我们需要将androidx禁用才可以是使用v7库。打开gradle.properties,并注释下面两句话即可达到目的。
gradle.properties在项目的位置
在这里插入图片描述
最后Sync Now:
需要注释的两句话
7. 尝试导入v7库,成功。这时其实v7库的导入已经成功了。
在这里插入图片描述
在这里插入图片描述
8. 最后删除项目中一些标红的、和androidx有关的部分即可。
这里有个比较隐蔽的错误,ConstrainLayout也是与androidx有关的控件,我们前面设置dependencies已经把他的依赖删除了,所以下图中界面呈现灰色(不可用),需要换成别的控件。否则即使没报错也会出错。
在这里插入图片描述
可以把最外层控件换成LinearLayout或者别的;下面打x的是ConstrainLayout中的特有属性,不报错,但是也需要删除:
在这里插入图片描述
10. 删完和androix相关的那些我们就可以运行程序啦:
在这里插入图片描述
最后分享一下自己之前用support.v7库的时候的一些dependencies设置吧。并非必须的设置,加进去用support.v7库写界面会比较方便。当然我们也说了,现在当然推荐默认的androidx啦。

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'de.hdodenhof:circleimageview:3.1.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.github.bumptech.glide:glide:3.7.0'
}
  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值