美文网首页
TextView、EditText属性简介

TextView、EditText属性简介

作者: 3Q竹林 | 来源:发表于2018-01-29 14:56 被阅读59次
    1. 字体粗体设置:
    布局方式:
        android:textStyle="bold"  
        android:typeface="sans" 
    代码方式:
        Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);
        p.setTypeface( font );
    
    1. TextView的其他不常用属性:
        android:shadowColor指定文本阴影的颜色,需要与shadowRadius一起使用。
    
        android:shadowDx设置阴影横向坐标开始位置。
    
        android:shadowDy设置阴影纵向坐标开始位置。
    
        android:shadowRadius设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
    
        android:cursorVisible设定光标为显示/隐藏,默认显示。
    
        android:digits设置允许输入哪些字符。如 “1234567890.+-*/% ()”
    
        android:textScaleX设置文字之间间隔,默认为1.0f。
    
        Selection.setSelection(editText.getText(), editText.getText().length());  // 光标位置设置
    
        android:textStyle设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
    
        android:typeface设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]
    
    1. 给textView加下划线方法:
    textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线
    textView.getPaint().setAntiAlias(true);//抗锯齿 
    textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG); //中划线 
    setFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG); // 设置中划线并加清晰 
    textView.getPaint().setFlags(0); // 取消设置的的划线
    
    1. 字体其他设置方法:
    SpannableStringBuilder style=new SpannableStringBuilder(str);
        //五个参数分别是,字体名称,字体大小,字体颜色,字体链接颜色
        style.setSpan(new ForegroundColorSpan(Color.parseColor(colorStr)),start,end,Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        style.setSpan(new AbsoluteSizeSpan(DisplayUtil.sp2px(getContext(),sp)),start,end,Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    
    1. 设置输入监听
    edit_text.addTextChangedListener(new TextWatcher() {
          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {
              LogUtil.showLog("Css", s);  //这里的s指:在用户输入之前,EditText中“所有的”文本信息
          }
    
          @Override public void onTextChanged(CharSequence s, int start, int before, int count) {
          }
    
          @Override public void afterTextChanged(Editable s) {
              LogUtil.showLog("Css2", s); //这里的s指,在用户输入之后,EditText中“所有的”文本信息
          }
      });
    
    //注意:上边这种方式无法实现对EditText内容的修改,只能监听提示。
    
    /*
    * Fileter方式: 禁止输空格+换行键
    */
    editText.setFilters(new InputFilter[]{filter});
    private InputFilter filter=new InputFilter() {
       @Override
       public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
          ////这里的source指,在用户输入时,EditText中单次变化的字符
          if(source.equals(" ") || source.toString().contentEquals("\n"))return "";
          else return null;  // 或者写成else return source;效果相同
       }
    };
    
    /**
      * 禁止EditText输入特殊字符
      */
     public static void setEditTextInhibitInputSpeChat(EditText editText){
      InputFilter filter=new InputFilter() {
       @Override
       public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        String speChat="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]";
        Pattern pattern = Pattern.compile(speChat);
        Matcher matcher = pattern.matcher(source.toString());
        if(matcher.find())return "";
        else return null;
       }
      };
      editText.setFilters(new InputFilter[]{filter});
     }
    
    //注意:Filter方式能对输入的内容做限定和修改;
    
    //通过digits 属性限定输入内容:
    方法一:直接在布局中添加属性
        android:digits = "abcdef"
    
    方法二:代码设置方式
        EditText mEditText = (EditText)findViewById(R.id.MyEditText);
        String digits = "abcdef";   //限定只能输入a-f中的字符,可重复
        mEditText.setKeyListener(DigitsKeyListener.getInstance(digits));
    
    //注意:digits限定了只能输入那些字符
    
    1. 使用TextInputLayout:
      它能让用户输入后,hint不会消失,会让hint变成一个在EditText上方的浮动标签。同时还包括一个漂亮的material动画,例子如下:
           //布局中
           <android.support.design.widget.TextInputLayout
              android:id="@+id/usernameWrapper"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
              <EditText
                  android:id="@+id/username"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:inputType="textEmailAddress"
                  android:hint="Username"/>
            </android.support.design.widget.TextInputLayout>
    
    
           //在代码中设置
            final TextInputLayout usernameWrapper = (TextInputLayout)findViewById(R.id.usernameWrapper);
            final TextInputLayout passwordWrapper = (TextInputLayout)findViewById(R.id.passwordWrapper);
            //内容为空时设置hint提示
            usernameWrapper.setHint("Username");
            passwordWrapper.setHint("Password");
            
            public void onClick(View v) {
                hideKeyboard();
                if (!validateEmail(username)) {
                     //被触发时,在上方显示的输入错误提示
                     usernameWrapper.setError("Not a valid email address!");
                 } else if (!validatePassword(password)) {
                    passwordWrapper.setError("Not a valid password!");
                } else {
                   usernameWrapper.setErrorEnabled(false);
                   passwordWrapper.setErrorEnabled(false);
                   doLogin();
                }
           }
    
    .

    相关文章

      网友评论

          本文标题:TextView、EditText属性简介

          本文链接:https://www.haomeiwen.com/subject/yapppxtx.html