不定期更新,大多是一些老忘记的属性,奇怪的细节,奇技淫巧之类的
TextView限制行数及末尾已省略号显示
android:maxLines=”3” 限制最大行数
android:ellipsize=”end” 末尾省略号
android:lines=”2” 显示两行,如果内容用一行就可以全部显示了,这时候TextView还是会占用两行的高度空间
tools属性,用来预览
例如text属性,在预览的时候会显示 tools:text 的内容,在正式运行的时候会显示 android:text 的内容。
tools属性在所有属性上都生效
使用时,系统会自动导入
xmlns:tools="http://schemas.android.com/tools"
命名空间
限制输入字符
设置EditText的android:digits 属性。
比如要限制只能输入数字和字母
android:digits="0123456789abcdefghijklmnopqrstuvwxyz"
不支持区间操作符~或-
TextView粗体
android:textStyle="bold"
ScrollView去掉拉到顶的动画跟滚动条
android:overScrollMode="never"
android:scrollbars="none"
RecycleView 嵌套惯性滑动问题
LinearLayoutManager layoutManager = new LinearLayoutManager(mContext){
@Override
public boolean canScrollVertically() {
return false;
}
};
recyclerView.setLayoutManager(layoutManager);
TextView文字,数字上下留白的问题
android:includeFontPadding="false"
即可消除
Dialog背景颜色深度
Dialog自带50%透明度的灰色遮罩层,若想修改遮罩层颜色深度,有两个思路
- 通过修改Style
通过 backgroundDimAmount来修改背景遮罩颜色深度,推荐这种方式,比较自然
- 通过取消遮罩层颜色,全屏dialog来做
- 0
getWindow().setBackgroundDrawable(new ColorDrawable(mContext.getResources().getColor(/*你的颜色*/)));
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
这种方式好处是更加灵活,但是遮罩层效果是跟随dialog出现效果,需要处理的东西比较多
CircleImageView + Glide 第一次展示只显示holder图片的问题
Glide.with(context.getApplicationContext())
.load(url)
.crossFade()
.placeholder(holder)
.error(holder)
.dontAnimate()
.into(iv);
重点 dontAnimate()
图片Uri
图片Uri跟文件的Uri格式不同,图片Uri为“content”开头的数据库资源文件,文件的Uri为“file”开头的文件,图片Uri不能直接转成文件,拿不到数据
可以参考博客
根据图片Uri获取图片绝对路径
改变软键盘右下角的按键
android:imeOptions="actionDone"
可选项有
直接使用可能不会生效,需要配合
android:singleLine="true"
图片的scaleType
再悄咪咪放个原图
获取通知栏高度
int notificationBar = Resources.getSystem().getDimensionPixelSize(Resources.getSystem().getIdentifier("status_bar_height", "dimen", "android"));
Fragment嵌套时,程序崩溃重启后内部Fragment白屏
内部Fragment应该使用 getChildFragmentManager ,而不是getFragmentManager,否则在重启之后会因为拿不到FragmentManager而白屏
Activity执行recreate()方法,dialog自动消失/不自动消失
public class MyDialog extends Dialog {
...
@Override
public void show() {
...
// 如果先执行show方法,再执行set params方法,当activity执行recreate重启的时候,dialog的显示状态不受影响
super.show();
getWindow().setAttributes(layoutParams);
}
}
...
public class MyDialog extends Dialog {
...
@Override
public void show() {
...
// 如果先执行set params方法,再执行show方法,当activity执行recreate重启的时候,dialog回自动销毁
getWindow().setAttributes(layoutParams);
super.show();
}
}
...
这个目前不知道是一个新特性,还是一个bug,谨慎使用