栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

你从未见过的EditText属性详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

你从未见过的EditText属性详解

前言

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

这一篇我们讲解EditText的使用,EditText是一个输入框,在Android开发中是常用的控件。也是获取用户数据的一种方式,EditText是TextView的子类,它继承了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.改变输入法中回车按钮的显示内容

```xml
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布局预览效果图如下

常用方法

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) {
   
      }
  }
     }
结语

看完以上内容,是不是也迫不及待想实现一个登录或者注册的页面了!!那还等什么,趁着记忆力深刻,让我们一起开始吧,也请各位多多点赞留言哦~ (WXGZH:下码看花)

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号