Android基本控件的使用(1)

来源:互联网 发布:网络教育的定义 编辑:程序博客网 时间:2024/06/04 22:53
1.文字超链接。
      
         android:
         android:text="www.baidu.com" />
 自动识别链接:

2.加入html样式
  String str="我有一个梦想
"
  tv.setText(Html.fromHtml(str));

3.密码输入框
 
     android:password="true"
     android:hint="请输入密码:"  />

4.EditText输入限制
  (1)、第一种方式是通过EditText的inputType来实现,可以通过xml或者java文件来设置。假如我要设置为显示密码的形式,可以像下面这样设置:
在xml中,  android:inputType="textPassword"
在java文件中,可以用myEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
当然,还有更多的其他属性用来进行输入设置。

(2)、第二种是通过android:digits属性来设置,这种方式可以指出要显示的字符,比如我要限制只显示数字,可以这样:
       android:digits="0123456789"

如果要显示的内容比较多,就比较麻烦了,将要显示的内容依次写在里面。


(3)、通过正则表达式来判断。下面的例子只允许显示字母、数字和汉字。
public static String stringFilter(String str)throwsPatternSyntaxException{    
      //只允许字母、数字和汉字     
     String   regEx  "[^a-zA-Z0-9\u4E00-\u9FA5]";                 
     Pattern   p   Pattern.compile(regEx);    
     Matcher   m   p.matcher(str);    
     return   m.replaceAll("").trim();    
  }
然后需要在TextWatcher的onTextChanged()中调用这个函数,
@Override  
     public void onTextChanged(CharSequence ss, int start, int before,int count) {  
         String editable =editText.getText().toString();  
         String str =stringFilter(editable.toString());
        if(!editable.equals(str)){
            editText.setText(str);
            //设置新的光标所在位置  
            editText.setSelection(str.length());
         }
     

(4)、通过InputFilter来实现。
实现InputFilter过滤器,需要覆盖一个叫filter的方法。
public abstract CharSequence filter ( 
    CharSequence source, //输入的文字 
    int start, //开始位置 
    int end, //结束位置 
    Spanned dest,//当前显示的内容 
    int dstart, //当前开始位置 
    int dend//当前结束位置 
);
下面的实现使得EditText只接收字符(数字、字母和汉字)和“-”“_”,Character.isLetterOrDigit会把中文也当做Letter。
editText.setFilters(new InputFilter[]{ 
new InputFilter() { 
    public CharSequencefilter(CharSequence source, int start, int end, Spanned dest, intdstart,
 int dend) { 
           for (int i= start; i < end; i++) { 
                 if (!Character.isLetterOrDigit(source.charAt(i)) &&!Character.toString(source.charAt(i)) .equals("_") &&!Character.toString(source.charAt(i)) .equals("-"))
 
                        return""; 
                
          
           returnnull; 
   }); 

另外使用InputFilter还能限制输入的字符个数,如
       EditText tv=newEditText(this); 

       int maxLength =10; 

       InputFilter[] fArray =newInputFilter[1]; 

       fArray[0]=new InputFilter.LengthFilter(maxLength); 

       tv.setFilters(fArray);
上面的代码可以限制输入的字符数最大为10。

5.更改文字字体
       android:typeface="字体"/>
0 0
原创粉丝点击