Android问题总结

关于一些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

图1
图2

19. Android Studio编译aar缺失文件问题

使用AS的指令编译aar的时候会出现缺失文件的问题,而且缺失部分文件。

解决方案:我遇到的是因为混淆配置导致的,混淆配置忽略了部分文件,可以修改混淆配置,或者关闭混淆即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。