Android 基础回故--控件篇之EditText

EditText是继承TextView的。目前新版本的源码中,EditText几乎没有什么内容,大部分内容放在了TextView中,所以此篇内容源码部分不局限于EditText。这也是查看源码经常性的操作。

1.先看常用操作。setText/getText

@Override
public Editable getText() {
    return (Editable) super.getText();
}

@Override
public void setText(CharSequence text, BufferType type) {
    super.setText(text, BufferType.EDITABLE);
}

getText调用了父类中的相同方法,只是在EditText中加了转型Editable。故名思义,这是一个操作text的类

点进去看下

图片1

这是一个继承了四个接口的接口。有我们比较熟悉的Charsequence和Spannable.基本方法和Spring类似都是对text的操作。

setText也调用了父类中的方法,但设置了一个BufferType。我们常用的TextView中的setText(Charsequence)

@android.view.RemotableViewMethod
public final void setText(CharSequence text) {
    setText(text, mBufferType);
}

TextView中默认的BufferType是BufferType.NORMAL。

public enum BufferType {
    NORMAL, SPANNABLE, EDITABLE,
}

这是一个形容文本内容的枚举类。只有三个常量NORAML(正常的一般文本)、SPANNABLE(span类型文本,此文后面讲述用法)、EDITEABLE(可编辑的,EditText中的文本均为此类)

上述知识点应用示例

自定义一个只显示部分内容的TextView控件。大概是这种显示:“6222**********************953”

显然我们是需要继承TextView并重写setText和getText方法的。由于常规的setText(charsequence)方法是final修饰的,无法在子类重写。故我们需要调用setText(text,buffertype)方法。自定义setText(charsequence)方法,setText(chafrsequence,BufferType.NORMAL)即可达到相同的效果

2.Inputtype的种类与作用

xml属性共有32种,可代码设置方法为setInputype()。

其实Inputtype本身也是一个接口,它支持四大类类型(TEXT/PHONE/NUMBER/DATETIME)

常用的有

text/textPassword/phone/number/numberPassword/numberDecimal

对应的InputType为

TYPE_CLASS_TEXT/TYPE_TEXT_VARIATION_PASSSWORD/TYPE_CLASS_PHONE/TYPE_CLASS_NUMBER/TYPE_NUMBER_VARIATION_PASSWORD/TYPE_NUMBER_FLAG_DECIMAL

有时我们会遇到输入密码明文显示的情况。相对应的inputType为TYPE_TEXT_VARIATION_VISIBLE_PASSWORD

注意:上述是输入的密码明文显示。若是动态变换显示edittext上已经存在的密码。则应该设置transformationMethod

setTransformationMethod(TransformationMethod)

类结构如下:


通常我们使用的是HideReturnsTransformationMethod和PasswordTransformationMethod

对应的操作代码为

etpwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//密码以明文显示
etpwd.setTransformationMethod(PasswordTransformationMethod.getInstance());//以密文显示,以.代替

3.监听文本改变

addTextChangedListener(TextWatcher)。通过此设置可以监听Edittext中text的变化。

4.Spanned/SpannableString /SpannableStringBuilder

相关关系及用法网上很多。这是我觉得不错的一篇,直接放链接

https://www.cnblogs.com/upwgh/p/5897495.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值