1. clipChildren & clipToPadding

区别:如果父布局有设置padding,那么想要子控件不被父布局裁剪,就需要用到clipToPadding。
用法:从子控件的爷爷节点开始,到子控件完整绘制需要的画布的持有者控件,都需要加clipChildren 或者 clipToPadding,主要还是要看子控件最终绘制到哪个控件的布局中

2. 无障碍

无障碍播报中如果一个TextView文案变化是没法自动播报的,若有无障碍焦点,需要手动调用View.announceForAccessibility播报,若无无障碍焦点,只需要重新获取焦点即可。

3. launcher 和singleTask

当launcher activity的启动模式是singleTask的时候,涉及到前后台切换,每次从后台切换到前台,都会导致上面的页面都被销毁,只显示launcher activity,详情参见 :https://blog.csdn.net/a1031359915/article/details/42212919

4. SeekBar动态设置ProgressDrawable

布局文件中设置了maxHeight,SeekBar动态设置ProgressDrawable后,高度会发生变化,需要再次设置bounds,具体解决方案:https://blog.csdn.net/yeyuwuhen1203/article/details/53101450

5. TextWatcher

如果用TextWatcher观察EditText内容输入,并且使用SpannbleString改变其样式时候,网上所说的先移除监听改变样式然后setText然后添加监听,是有问题的,会重置输入法;包括使用replace都不行。事实上TextWatcher回调中的字符串具体实现是SpannableStringBuilder直接转换类型,然后设置样式即可;清除样式时候一定要使用removeSpan。

6. 波纹点击效果

官方提供两种

  • ?attr/selectableItemBackground 有边界的波纹
  • ?attr/selectableItemBackgroundBorderless 无边界的波纹

7. RecyclerView竖屏多列

一行多列,等比均分时候,RecyclerView算每一个item占比,会加上divider设置的Rect

8. 重复依赖

如果遇见 Program type already present : xxx 这类重复依赖问题,正常情况下

  • Clean project
  • 清空Android Studio缓存
    基本可以生效

但是如果不是重复依赖,但是依旧报这个错误,执行下面指令,清空build缓存
./gradlew cleanBuildCache

9. 动画

在补间动画或者属性动画过程中,设置View可见性,会不生效

10. Fragment构造函数问题

android 5.0以上,系统会自动崩溃重启,如果涉及到 Fragment,在崩溃重启过程中,需要有一个public的空构造函数,详情查看Fragment#instantiate方法

11. CardView background

正常情况下,在XML布局文件中设置CardViewbackground是不生效的,但是代码动态设置可以生效,一旦生效后,CardView的圆角就可能会被背景重叠,导致不生效问题。由于阴影的颜色深浅,可以根据背景透明度变化,所以如果要改变阴影深浅,需要外面套一层专门处理阴影的布局

12. CardView 裁圆角,有白边或者黑边

设置 CardView 的背景色 cardBackgroundColor 为透明

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容