关于一些android中常见问题的解决方案:
1. 加载带图片的html
将文件夹拷贝到assets下
只需要在
即可
2. Recyclerview拖拽排序
挖坑:
1.执行gridAdapter.notifyItemMoved(srcPosition, targetPosition);
执行改变位置之后item缓存没有变换,此处需要加上滑动结束的监听,用来刷新和操作数据,适配器其他刷新方法会影响拖拽效果
3.xml中给view添加阴影底纹(>API 21)
android:elevation="2dp"
4.Android studio找不到jdk
前言
今天,打开as莫名其妙的的类上出现一行文字,No IDEA annotations attached to the JDK 1.8,类各种红叉,xml文件各种乱码,项目也运行不起来,头疼中…
解决过程
step1: 关闭 Android studio
step2: 打开 C:\Users\UserName\.android 将 build-cache 文件夹 重命名为 build-cache.bak
setp3: 打开 C:\Users\UserName.AndroidStudio3.2\system 重命名一下文件
caches—>> caches.bak
compiler—>> compiler.bak
compile-server—>> compile-server.bak
conversion—>> conversion.bak
external_build_system—>> external_build_system.bak
frameworks—>> frameworks.bak
gradle—>> gradle.bak
resource_folder_cache—>> resource_folder_cache.bak
5.Copy方法导致复制的bitmap保存后图片过大
mBitmap = bitmap.copy(Bitmap.Config.RGB_565, true);
6.viewpager切换导致图片重叠
public Object instantiateItem(@NonNull ViewGroup container, int position) {
PhotoView imageView = pvList.get(position);
//防止图片重叠显示
if (imageView.getParent() == null) {
(container).addView(imageView);
}
return imageView;
}
7.关于”后台弹出界面”权限
此权限只有小米手机存在而且,会影响系统自带分享无法弹出分享界面
8.自带分享文件到微信注意
文件名称不能带特殊符号例如:“:”
9.ListView嵌套edittext注意事项
禁止复用view例如:(会导致数据加载错乱)
If(view == null)
//导入itemview
else
View = contentview.gettag;
10.dialog中弹出软键盘
问题
我们或许有这样的需求:当我们打开一个界面弹出一个带有输入框的弹出框时,输入框能够自动聚焦,并弹出软键盘。
通过dialog获取 editText ,
editText.requestFocus() ;方法并没有效果。
解决1亲测可行
手动弹出软键盘
//弹出软键盘
public void showKeyboard(EditText editText) {
//其中editText为dialog中的输入框的 EditText
if(editText!=null){
//设置可获得焦点
editText.setFocusable(true);
editText.setFocusableInTouchMode(true);
//请求获得焦点
editText.requestFocus();
//调用系统输入法
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText, 0);
}
}
如果在自定义dialog中
//调用系统输入法
InputMethodManager inputManager = (InputMethodManager) editText
.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(control_input_pass, 0);
在activity dialog.show()方法后调用 ,由于在调用时可能dialog界面还未加载完成,还没显示在屏幕上,此时editText 为空,因此加上一个延时,延迟显示。
handler.postDelayed(new Runnable() {
@Override
public void run() {
showKeyboard(editText);
}
},300);
方案2
dialog的监听方法
dialog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
showKeyboard(editText);
}
});
第一次不会弹出软键盘,从第二次才会正常,原因如上
11. Android 9.0之后 HTTP请求注意事项
解决方法1:
在res下新增一个 xml 目录,然后创建一个名为:networksecurityconfig.xml 文件(名字自己随便起,意思就是允许开启http请求)
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
然后在AndroidManifest.xml文件下的application标签增加以下属性
android:networkSecurityConfig="@xml/networksecurityconfig"
解决方法2:
开启明文权限
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
12.小米显示系统相机拍照的图片不显示问题
在imageview设置
android:layerType="software"
此设置导致图片缩放等操作卡顿
13.关于焦点和软键盘的问题
退出界面需要收起软键盘在监听中先收起键盘在finish
14.ScrollView嵌套RecyclerView
会出现卡顿,原因是滑动冲突。可通过以下方法禁用RecyclerView的滑动解决。如是嵌套ListView或者GridView可尝试类似禁用内部控件滑动的方法。
recyclerView.setLayoutManager(new GridLayoutManager(mContext, 3){
@Override
public boolean canScrollVertically() {
return false;
}});
15.关于全面屏适配的问题
某些机型出现黑边等,如小米8
原因:
以上方法获取的屏幕宽高在小米8这类机型不准确
所以通过以下方法获取宽高并去除标题栏等高度:
16.ScrollView嵌套gridview文字多行显示不全
解决方法:在文字布局中设置minlines
17.当List中add数据重复覆盖怎么办
for (int i = 0 ; i < listQ.size(); i++){
ProductCollection proC = new ProductCollection();
User user = basicDao.find(listQ.get(i).getUserId(), User.class);
proC.setUserName(user.getUserName());
proC.setIsList(listQ.get(i).getIsList());
proC.setqFileuploadDate(listQ.get(i).getqFileuploadDate());
proC.setqListuploadDate(listQ.get(i).getqListuploadDate());
list.add(proC);
}
解决方法: 不要将ProductCollection proC = new ProductCollection();放在for循环外面
18. 自定义view提示错误Render problem导致无法显示
如下错误: 首先我们要看下报错信息,我这里是style的id为-1导致的问题,可以看到图2自定义view里初始style为-1导致了这个问题,改为0即可,其他类似错误也可以按照这个思路解决。
修改完记得rebuild
19. Android Studio编译aar缺失文件问题
使用AS的指令编译aar的时候会出现缺失文件的问题,而且缺失部分文件。
解决方案:我遇到的是因为混淆配置导致的,混淆配置忽略了部分文件,可以修改混淆配置,或者关闭混淆即可。