AutoCompleteTextView命名疑问:为何含TextView却具备EditText属性?
关于AutoCompleteTextView的两个问题解答
1. 为什么AutoCompleteTextView的名字看起来有点奇怪?
其实这个命名完全符合Android控件的家族式命名逻辑:
- 前缀
AutoComplete直接点明了它最核心的功能——自动补全,让开发者一眼就能get到它的用途; - 后缀
TextView则是因为它属于Android的「文本控件家族」,这个家族里的所有成员(比如TextView、EditText、甚至Button)本质上都是从TextView派生出来的。虽然它直接继承的是EditText,但用TextView作为后缀,能清晰地把它归到文本控件的范畴里,是Android控件命名的常规操作。
2. 为何名称含TextView,却具备EditText的全部属性?它还保留TextView的属性吗?
你的观察非常准确,这里的关键是理清它的继承关系链:AutoCompleteTextView → EditText → TextView → View
具体来说:
- 它直接继承自
EditText,所以天然就拥有EditText的全部属性和功能——比如可编辑、输入光标、软键盘交互、输入内容监听这些; - 同时因为
EditText本身就是TextView的子类,所以AutoCompleteTextView也完整保留了TextView的所有属性,比如文本颜色、字号、对齐方式、行间距、文本选择、点击事件等等。
简单总结:它就是一个自带自动补全功能的EditText,而EditText本身就是可编辑的TextView,所以名字里的TextView并没有误导性,反而准确反映了它的控件家族归属。
内容的提问来源于stack exchange,提问作者V. Dalechyn
相关产品推荐
相关产品推荐

