一.状态栏
1.状态栏透明
问题:部分5.0以上系统上会有兼容性问题
//以下方案在部分5.0以上手机内会有兼容性问题,会有一个半透明的背景附在状态栏位置上
final int sdk = Build.VERSION.SDK_INT;
Window window = getWindow();
WindowManager.LayoutParams params = window.getAttributes();
if (sdk >= Build.VERSION_CODES.KITKAT) {
int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; // 设置透明状态栏
if ((params.flags & bits) == 0) {
params.flags |= bits;
window.setAttributes(params);
}
}
//最终方案
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//5.0 全透明实现
//getWindow.setStatusBarColor(Color.TRANSPARENT)
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//4.4 全透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
2.状态栏高度
设置状态栏透明后,ToolBar(或者自定义的titleBar)就会跑到StatusBar下面
理这个问题有两个思路。一个是为ToolBar顶部设置一个高度和状态栏一样的padding或margin。第二个是在根布局设置android:fitsSystemWindows="true"属性,然后新建一个和ToolBar背景色一样的View添加到原来状态栏的位置(或者直接在根布局设置一个和ToolBar一样的背景色,不过测试时发现这个方法在有DrawerLayout时好像不管用)。
二EditView常用问题
输入数字跟小数,并且小数点只有一个
edittext.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);