EditText
是 Android 中用于接收用户输入文本的基本组件,它继承自 TextView
,并添加了一些特定的功能,如支持光标、选中文本、剪切、复制和粘贴等功能。下面我将结合源码来分析 EditText
的实现原理。
1. 类定义
EditText
类定义如下所示:
1public class EditText extends TextView implements TextWatcher, OnEditorActionListener, OnFocusChangeListener, View.OnLongClickListener, SearchView.OnQueryTextListener {
2 // ...
3}
可以看到 EditText
实现了多个接口,包括 TextWatcher
(文本变化监听器)、OnEditorActionListener
(编辑动作监听器)、OnFocusChangeListener
(焦点变化监听器)等。
2. 构造函数
EditText
的构造函数通常会设置一些默认属性,比如启用编辑功能等。
1public EditText(Context context) {
2 super(context);
3 init(null, android.R.attr.editTextStyle);
4}
5
6public EditText(Context context, AttributeSet attrs) {
7 super(context, attrs);
8 init(attrs, android.R.attr.editTextStyle);
9}
10
11public EditText(Context context, AttributeSet attrs, int defStyleAttr) {
12 super(context, attrs, defStyleAttr);
13 init(attrs, defStyleAttr);
14}
15
16private void init(AttributeSet attrs, int defStyle) {
17 // ...
18 setSingleLine(mSingleLine);
19 setHorizontallyScrolling(false);
20 setCursorVisible(true);
21 setMovementMethod(LinkMovementMethod.getInstance());
22 setSelectAllOnFocus(mSelectAllOnFocus);
23 setCustomSe