可以使用下面的命令查看具体的错误信息
gradlew compileDebugSources --stacktrace -info
项目中需要在一段文字的最后两个字加点击事件,正常设置之后发现点击结尾空白的位置也会响应点击事件。明明已经设置了点击区间。
解决方法:在后边紧接着追加一个0宽度字
builder.append("\u200b");
或者直接在文字后面添加。参考文档
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T5Ho7jek-1578121774004)
很丑,如何修改呢?
这里就需要用到TextView的setHighlightColor属性,Android4.0以上默认是淡绿色,低版本的是黄色。
我们需要通过这个方法重新设置背景色。
项目中接入leakcanary后,今天早上发现一条内存泄漏由ClickableSpan引起的,百度之后果然有人和遇到同样的问题,这里记录一下。
解决方法:参考文献
即表示在页面完全渲染完成之前,用户会看到一个占位的样式,用以描绘了当前页面的大致框架,加载完成后,最终骨架屏中各个占位部分将被真实的数据替换。
骨架屏(Skeleton Screen)在Android中的应用
项目中底部回复框,用的是DialogFragment,设置了Window的高度为WindowManager.LayoutParams.MATCH_PARENT的时候,当dialog弹出的时候,状态栏为变色黑色的(设置成固定高度的时候,并不会变黑)
解决办法:手动设置状态栏为透明状态
// 设置宽度为屏宽, 靠近屏幕底部。
Window window = getDialog().getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
// 设置状态栏为透明色
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
lp.gravity = Gravity.BOTTOM;
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
// WindowManager.LayoutParams.MATCH_PARENT换成固定高度不会出现黑色状态栏
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(lp);
空格  ; ;
< 小于号 <; <;
> 大于号 >; >;
& 与号 &; &;
” 引号 "; ";
‘ 撇号 &apos; ';
× 乘号 ×; ×;
÷ 除号 ÷; ÷;
databinding里面的拼接不能像下面这样
android:text='@{"username:"+bean.name}'
这样编译的时候会报错
正确的写法是下面这样
android:text='@{@string/user_name+bean.name}'
需采用 @string/xxxx的形式进行字符串的拼接
resources.arsc压缩会影响性能吗
AndResGuard is promoting some bad practices
RecyclerView 增加了设置分割新的类
androidx.recyclerview.widget.DividerItemDecoration
报错内容如下:
java.lang.IllegalArgumentException: class com.caiyu.m_home.entity.allreply.ReplyListEntity declares multiple JSON fields named viewModel
原因是:子类和父类有相同的字段属性。
解决办法:
错误产生的原因,是在用Gson转换javaBean的时候,在类文件中存在有类型为java.lang.reflect.Method的字段的类型,所以报以上错误。检查确实是的,在该字段前面加上transient标记就可以了。
不过这个问题貌似在Android 9.0以上不会报,是在8.0上测试出来的。
今早将项目在Android 4.4 手机上跑了一下,直接崩溃了,看到如上log信息,应该是版本问题,看了okhttp的官方介绍最新版的okhttp已经放弃4.4手机了
由于前几天将Retrofit的版本升到2.7,内置的okhttp最低支持5.0,现在要么放弃4.4的用户,用么将Retrofit的版本降到2.5可以解决问题。
Unexpected char 0x65b0 at 34 in Content-Disposition value: form-data; name=“file”;
测试人员在上传图片的时候,选择了一张中文命名的图片文件,导致程序崩溃。
okhttp3.Headers里面做了校验
static void checkName(String name) {
if (name == null) throw new NullPointerException("name == null");
if (name.isEmpty()) throw new IllegalArgumentException("name is empty");
for (int i = 0, length = name.length(); i < length; i++) {
char c = name.charAt(i);
if (c <= '\u0020' || c >= '\u007f') {
throw new IllegalArgumentException(Util.format(
"Unexpected char %#04x at %d in header name: %s", (int) c, i, name));
}
}
}
网上解决方案:
我的解决方案是检查是否含有中文,然后重命名文件