你从未见过的EditText属性详解

前言

Hi,小伙伴们,Layout学会了,ButtonTextView学会了,ImageView也学会了,是不是感觉总是学习这些单一的东西稍微有点枯燥了呢?那么学习了这篇文章之后,开始尽情发挥你们的想象力开始搞事情吧~

这一篇我们讲解EditText的使用,EditText是一个输入框,在Android开发中是常用的控件。也是获取用户数据的一种方式,EditTextTextView的子类,它继承了TextView的所有属性。话不多说,让我们赶紧开始学习吧~

简介

EditText的结构

public class EditText
extends TextView

android.view.View
↳android.widget.TextView
↳ android.widget.EditText

常用属性

1.默认提示文本的两个属性如下

android:hint="默认提示文本" 
android:textColorHint="#95A1AA" 

2.获得焦点后全选组件内所有文本内容

android:selectAllOnFocus="true"

3.限制EditText输入类型

4.文本类型,多为大写、小写和数字符号,可选参数如下

android:inputType="none" 
android:inputType="phone" 
android:inputType="text" 
android:inputType="textAutoComplete" 
android:inputType="textAutoCorrect" 
android:inputType="textCapCharacters" 
android:inputType="textCapSentences" 
android:inputType="textCapWords" 
android:inputType="textEmailAddress" 
android:inputType="textEmailSubject" 
android:inputType="textFilter" 
android:inputType="textImeMultiLine" 
android:inputType="textLongMessage" 
android:inputType="textMultiLine" 
android:inputType="textNoSuggestions" 
android:inputType="textPassword" 
android:inputType="textPersonName" 
android:inputType="textPhonetic" 
android:inputType="textPostalAddress" 
android:inputType="textShortMessage" 
android:inputType="textUri" 
android:inputType="textVisiblePassword" 
android:inputType="textWebEditText" 
android:inputType="textWebEmailAddress" 
android:inputType="textWebPassword" 

数值类型

android:inputType="numberPassword" 
android:inputType="numberSigned" 
android:inputType="number" 
android:inputType="numberDecimal" 
android:inputType="phone" 
android:inputType="datetime" 
android:inputType="date" 
android:inputType="time" 

5.设置最小行,最多行,单行

android:minLines="3" 
android:maxLines="10" 
android:singleLine="true" 

6.设置文字间隔,设置英文字母大写类型

android:textScaleX="1.5" 
android:textScaleY="1.5" 
android:capitalize="none" 

7.控制EditText四周的间隔距离与内部文字与边框间的距离

android:paddingTop="5dp" 

8.改变输入法中回车按钮的显示内容

android:imeOptions="actionNone"








其它常用属性
android:numeric="integer" 
android:password="true" 
android:textColor="#ff8c00" 
android:textStyle="bold" 
android:textSize="20dp" 
android:textAlign="center" 
android:typeface="monospace" 
android:background="@null" 
android:layout_weight="1" 
android:cursorVisible="true" 
android:digits="1234567890" 
android:drawableRight="@drawable/xxx" 
android:drawableTop="@drawable/xxx" 
android:drawableBottom="@drawable/xxx" 
android:drawableLeft="@drawable/xxx" 
android:drawablePadding 
android:editable="true" 
android:ellipsize="start" 
android:gravity="center" 
代码实例讲解

通过上面了解EditText输入框的常用属性之后,结合上几讲TextView、Button我们通过代码示例来讲解实现一个简单的登录页面效果

示例xml布局代码



    
    
            
    
        
        
            
            
                

                

            

            

            

                

                
                        
            

            

        

        
xml布局预览效果图如下

你从未见过的EditText属性详解_第1张图片

常用方法

1.设置焦点,光标的位置

EditText et = (EditText) findViewById(R.id.et_mobile); 
et.setFocusable(true);
et.requestFocus();
et.setFocusableInTouchMode(true);

et.clearFocus();//失去焦点 
et.requestFocus();//获取焦点

2.设置默认输入法

et.setInputType(EditorInfo.TYPE_CLASS_TEXT); //中文键盘
et.setInputType(EditorInfo.TYPE_TEXT_VARIATION_URI); //英文键盘
et.setInputType(InputType.TYPE_CLASS_NUMBER); //数字键盘

3.强制显示隐藏软键盘

InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);  
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); //隐藏软键盘
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED); //显示软键盘

4.始终不弹出软键盘

//在XML文件中,Edittext父布局上进行如下设置
android:focusable="true"   
android:focusableInTouchMode="true"
    
//在Java代码中,添加下面属性
et.setInputType(InputType.TYPE_NULL);

5.显示隐藏密码

//在XML文件中设置
android:password="true" 
android:inputType="textPassword" 
android:inputType="textVisiblePassword" 

//在Java代码中设置
et.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//隐藏密码
et.setTransformationMethod(PasswordTransformationMethod.getInstance());//显示密码

6.获取文本最大长度,由于EditText没有提供获取最大长度方法,需要用到反射

public static int getMaxLength(EditText et) {
         int length = 0;
         try {
             InputFilter[] inputFilters = et.getFilters();
             for (InputFilter filter : inputFilters) {
                 Class c = filter.getClass();
                 if (c.getName().equals("android.text.InputFilter$LengthFilter")) {
                     Field[] f = c.getDeclaredFields();
                     for (Field field : f) {
                         if (field.getName().equals("mMax")) {
                             field.setAccessible(true);
                             length = (Integer) field.get(filter);
                         }
                     }
                 }
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
         return length;
     }

7.文本监听事件,监控当前输入的文本长度,需要实现TextWatcher接口

private class TextChangedTextWatcher implements TextWatcher {
    
         private EditText mView;
         private int mMaxLength;
         private CharSequence mMobile;
 
         public TextChangedTextWatcher(EditText v) {
             super();
             mView = v;
             mMaxLength = getMaxLength(v);
         }
 
         @Override
         public void beforeTextChanged(CharSequence s, int start, int count, int after) {
             //文本改变前
         }
 
         @Override
         public void onTextChanged(CharSequence s, int start, int before, int count) {
             //文本改变时
             mMobile = s;
         }
 
         @Override
         public void afterTextChanged(Editable s) {
             //文本改变后,一般使用此方法
             if (mMobile == null || mMobile.length() == 0)
                 return;
             if (mMobile.length() == 11 && mMaxLength == 11) {
                 
             }
         }
     }

结语

看完以上内容,是不是也迫不及待想实现一个登录或者注册的页面了!!那还等什么,趁着记忆力深刻,让我们一起开始吧,也请各位多多点赞留言哦~ 如果小伙伴想学习更多知识或者快速学习进阶,可以加入我们的微信群一起探讨~ 在公众号中回复微信群,就可以加入其中,也可以在公众号中回复视频,里面有一些初学者视频哦~

PS:如果还有未看懂的小伙伴,欢迎加入我们的QQ技术交流群:892271582,里面有各种大神回答小伙伴们遇到的问题,我们的微信群马上也将要和大家见面啦,届时希望大家踊跃加入其中~~

你可能感兴趣的:(android,android-ui)