Android笔记
EditText
设置字体大小
editText= (EditText) findViewById(R.id.in_login);
// 新建一个可以添加属性的文本对象
SpannableString ss = new SpannableString("请输入用户名");
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(15,true);
// 附加属性到文本
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置hint
editText.setHint(new SpannedString(ss)); // 一定要进行转换,否则属性会消失
editText.setTextSize(15);//设置text字体大小
去除下划线
android:background="@null"
TextView
文字长度控制
效果:
android:maxWidth="50dp"
android:ellipsize="end"
android:maxLines="1"
setText()空指针问题
报错:
android.content.res.Resources$NotFoundException: String resource ID #0x2
报错原因:当调用setText()方法时如果传入int型是不会被当成内容而是resourceID来使用
改法:
TextView.setText("" + arg);
Android HTTP请求
- 在Android4.0以后,会发现,只要是写在主线程(就是Activity)中的HTTP请求,运行时都会报错,这是因为Android在4.0以后为了防止应用的ANR(Aplication Not Response)异常,Android这个设计是为了防止网络请求时间过长而导致界面假死的情况发生。
解决方法:
//AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<application
......
android:usesCleartextTraffic="true">
// Android 4.0 之后不能在主线程中请求HTTP请求
new Thread(new Runnable(){
@Override
public void run() {
//Http请求代码
}
}).start();
状态栏
隐藏状态栏
- 第一步
//全屏并且隐藏状态栏
private void hideStatusBar() {
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);
}
//全屏并且状态栏透明显示
private void showStatusBar() {
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);
}
- 第二步:在做了该Activity的全屏设置的前提下,还要在onCreate()方法中加入如下语句:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
- 第三步:获取状态的绝对高度,经过反射获取
//获取手机状态栏高度
public static int getStatusBarHeight(Context context) {
Class<?> c = null;
Object obj = null;
Field field = null;
int x = 0, statusBarHeight = 0;
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
statusBarHeight = context.getResources().getDimensionPixelSize(x);
} catch (Exception e1) {
e1.printStackTrace();
}
return statusBarHeight;
}
透明状态栏
/**
* 设置透明状态栏
* 以下代码需要在setContentView方法之前
*/
private void setStatusBarTransparent(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
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){
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
FileProvider
各种报错
1.Add Google Maven repository and sync project
- 一种修改方法:在项目的build.gradle中修改如下:
buildscript {
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
//jcenter()
google()
}
······
}
allprojects {
repositories {
google()
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
//jcenter()
}
}
2.你的主机中的软件中止了一个已建立的连接
https://blog.csdn.net/heming9174/article/details/108254640
3.Couldn‘t find meta-data for provider with authority
https://blog.csdn.net/haiyoumeizhuce/article/details/99981936