- 相册框架Matisse
安卓ui库--QMUI QMUIRadiusImageView-qmui_is_circle,圆形 - 取消Button的背景色 style="?android:attr/textViewStyle"
android:background="@null" - layout_toLeftOf 在。。的左边
- gridview嵌套scorllview显示不完全问题--众所周知,a、重写mygridview,b、也许你可以看看你的父布局高度够不够你的gv展示你需要展示出来的数据,c、看看gv的父布局的大小是否够展示这么多数据 d、看看adapter的item的宽高布局是否是match_parent,如果是,请改成,war_content
- BaseRecyclerViewAdapterHelper,推荐一个好用的adapter的非常方便使用的框架
singleInstance 只有一个实例
singleTask 栈内复用模式(onNewIntent)
singleTop 栈顶复用模式(onNewIntent())
standard 默认模式 安卓中四种启动模式小记(以前写过相关文章:https://blog.csdn.net/qq_39590763/article/details/84620750)- tabLayout切换控件
- alt+s gsonformat的格式化的快捷键,推荐一个Androidstudio中格式化json数据以及快捷导入实体的插件:gsonformat
- tools属性, 相当于一个测试的作用,在as中预览的时候可以看到tools的值,运行以后就不会显示了。
- gravity :是对控件本身来说的,是用来设置“控件自身的内容”应该显示在“控件自身体积”的什么位置,默认值是左侧。
layout_gravity:是相对于控件的父元素来说的,设置该控件在它的父元素的什么位置。 例如:android:gravity="left|top" 设置按钮中的文字靠左居上 - FrameLayout 帧布局,一般联合viewPager使用,做一个tab切换的效果
- fragment使用setArguments(),传参,在由于内存紧张导致Fragment被系统杀掉并恢复(re-instantiate)时能保留这些数据。
- layout_weight weight是平分剩下的空间的。线性布局让一个a控件处于布局底部--试一下,让a控件上面的控件高度为0且layout_weight=1!!
- x5webview,使用场景:用于h5跳转的时候使用
- cardView,卡片布局,适用与列表数据的item中有圆角阴影等样式的时候
- maxAge 如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即 写到对应的Cookie文件中(每个浏览器存储的位置不一致)。cookie.setMaxAge(Integer.MAX_VALUE);(永久有效) 。 当maxAge为0时,表示立即删除Cookie 。 当maxAge属性为负数,则表示该Cookie只是一个临时Cookie,不会被持久化,仅在本浏览器窗口或者本窗口打开的子窗口中有效,关闭浏览器后该Cookie立即失效。
- 设置已进入含有编辑框的界面不会一下子就获取到焦点,在编辑框的父布局中加入属性:android:focusable="true"
android:focusableInTouchMode="true" - empty string 查询主要是金钱类参数的类型是否是double,还有就是重新考一次api文档的响应参数的实体
- 约束布局下面的include高度失效,下面的布局使用top_to_buttom="title_bar"无效,直接margintop_title_bar的距离。 尴尬.jpg
- 解决NestedScrollView 不能撑满整个屏幕的问题,给NestedScrollView 加一个属性----android:fillViewport="true"
- 线性布局里面的,showDividers/dividers(支持图片和shape文件显示)
- as导入依赖的时候,新版本有两种方式-implement,api,api的范围大一点。
比如:A imp B imp C,A可以引用B,但是不能引用C,只有B可以引用C的公开 接口,
A api B api C,A可以引用B也可以引用C的公开接口 - 以后的点击事件就用:View.onClickDebounced(操作。。。),解决短时间内跳转多次的问题
- 在fragment里面,startActivityForResult()的时候,第一个参数,可以是activity,也可以是context,区别就是,看你需要在哪里拿到返回的值?,然后就传啥
- 解决数字太大自动转为科学计数法的, toPlainString,转为正常数字
- fragment重叠问题
//必须在super 之前调用,不然无效。因为那时候fragment已经被恢复了。
if (savedInstanceState != null) {
// FRAGMENTS_TAG
savedInstanceState.remove("android:support:fragments");
savedInstanceState.remove("android:fragments");
}------亲测有用,只是不知道自己测试的方式对不对 - tools:listitem-显示哪个item
tools:listcount-显示几条(listview或者gridview或者recyclerview中使用) tools:src="@tools:sample/avatars" /> 预览的时候 itemlayout 的imageview可以用这个src,可以预览很多张图片 - 解决自定义的titlebar的沉浸式问题
ImmersionBar.setTitleBar(this, toolbar的id) - cornerImageView 用于需要显示的图片中有圆角的时候
- 直接给别人发项目的时候,可以把.gradle,.idea,build,gradle都删掉,别人拿过去编译的时候这些都是会重新生成的
- 记录一次找不到资源的0智商问题:
一直找不到资源id,文件和id肯定是有的,也肯定是没错的,到那时就是找不到,,,后来发现,是自己把layout放到debug里面去了。。 - View-toolbar 打开,按下alt+ctrl+←,可以回到上次编辑的地方
- spannableString的用法,包前
spannableString.setSpan(ForegroundColorSpan(Color.parseColor("#FD3A46")), 9, 21, Spannable.SPAN_EXCLUSIVE_INCLUSIVE) - kotlin之初始化可变集合: var records: MutableList<ChainReserveYeWuRE> = mutableListOf(),
- bga的值设置:setData(ArrayList)
- 服务端返回的响应参数如果时,Integer64位的话,类型就是长整形的(Long),,在adapter适配器里面设置数据de时候,如果响应实体的参数类型时候Int的时候也要注意,设置值的时候也要toString一下!,要不然报错的,可能会报资源找不到的错误
- 新建api的文件的时候可以新建一个object类型 的文件!
- 界面太多 ,很多界面都有相同 功能的控件的命名的时候就可以用baselilb下面的ids给配置一个公共的全局的id,用到这种控件的时候就直接@id/base_img_back,就可以直接使用啦,
<resources>
<item name="base_img_back" type="id" />
</resources> - 取消文本框内置上下边距 android:includeFontPadding="false"
- onItemChildClick的点击事件的时候记得给控件添加点击事件
- 当编辑框超过布局高度的时候,实现编辑框随着软键盘的的弹起而上升,在清单文件中给,该activity添加, android:windowSoftInputMode="adjustPan|stateHidden"
- input type=numberDecimal,的时候才可以给小数点,并且只能输入数字的,如果是input type=number的话就只能输入整数的
- 记录一次傻逼问题!!!!!!
当我在adapter里面想给一个视频控件一i个显示隐藏的问题的时候我一直这样xie,,
when (item.videoUrl.isEmpty()) {
gsyVideoPlayer.visibility = View.GONE }
//gsyVideoPlayer就是那个控件,然后一直报错一直报错!!尝试各种先获取控件再去显示隐藏,但是一直报错,以为是这个控件的问题!!!后来发现我写在了,,when里面,,,when里面,,when里面 ,,这是什么操作!!!啊啊啊 - photoView