添加androidx.preference依赖仍报Cannot resolve class PreferenceImageView错误
问题原因
androidx.preference.internal.PreferenceImageView属于AndroidX Preference库的内部实现类,internal包下的所有类本身就不对开发者公开,在preference-ktx 1.1.0及以上版本中,官方已经彻底移除了该类的外部访问权限,并非重命名,所以你使用1.1.1版本依赖时会出现类找不到的报错。
解决方案
- 方案1:降级依赖版本
如果你没有必须使用高版本Preference库的需求,直接将preference-ktx降级到1.0.0版本即可,同时可删除冗余的legacy-preference-v14依赖,修改后的依赖如下:
implementation 'androidx.preference:preference-ktx:1.0.0'
修改后重新同步Gradle、清理项目缓存再构建即可。
方案2:替换内部类引用
如果需要保留高版本Preference库,不要直接引用这个内部类:- 如果是布局文件中直接写了这个类,直接替换为普通
ImageView即可,自定义Preference时自己实现图标加载、尺寸适配的逻辑即可,该内部类本身的核心逻辑仅为自动适配Preference图标尺寸,没有特殊功能。 - 如果是依赖的第三方库引用了该类,可以给对应第三方库提issue升级适配高版本Preference,或者自行fork第三方库修改内部类引用逻辑。
- 如果是布局文件中直接写了这个类,直接替换为普通
方案3:自定义等效View
如果需要完全复现PreferenceImageView的功能,直接参考旧版Preference库的源码自定义一个同名View即可,源码逻辑非常简单,仅需几十行代码就能实现相同效果,不需要依赖官方内部实现。
内容的提问来源于stack exchange,提问作者AtomX
相关产品推荐
相关产品推荐

