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

你可能感兴趣的:(坑)