TextView、EditText属性简介

  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动画,例子如下:
       //布局中
       
          
        


       //在代码中设置
        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属性简介)