zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Cookie的作用范围、设置、创建、获取的方法
    2020寒假总结14
    MyBatis中foreach传入参数为数组
    Springmvc接收数组参数
    寒假每日总结十
    2020寒假每日总结
    2020寒假总结八
    2020寒假每日总结七
    2020寒假每日总结四
    2020寒假总结三
  • 原文地址:https://www.cnblogs.com/cyhui/p/11675096.html
Copyright © 2011-2022 走看看