![Android移动应用开发教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/120/47684120/b_47684120.jpg)
2.1 UI控件简介
Android SDK提供了丰富的UI控件,基本能够满足大多数应用的UI开发需求。此外,一些优秀的第三方控件也被广泛使用。
![](https://epubservercos.yuewen.com/28BC1F/27087516004948706/epubprivate/OEBPS/Images/31_01.jpg?sign=1739431382-7wXogKnrFuJ8ryHA3uwWID19wQ68XxAD-0-09bd5d43b0827f5f992a2ee1fe39f09a)
2-1 UI控件简介
UI控件的父类是View类,View类定义了UI控件共有的属性和方法,比如位置、大小、绘制方法等,所有控件都具备这些属性。UI上使用的控件,都是直接或间接派生自View类,比如常见的按钮控件Button类、文本显示控件TextView类、文本编辑控件EditText类等,都是View类的子类。
UI控件总体上分为两大类:一类是用于信息呈现和交互的控件;另一类是容器类的控件。在容器控件中放置其他控件,以实现分组、排版布局等管理。View类的子类ViewGroup类,是各种容器类的父类。开发环境中控件面板Common类的常用控件如图2-1所示,包含文本框、按钮、图片显示控件等控件。
在Android应用UI开发过程中,第一步是将控件放入界面,使其成为界面的一部分。第二步,通过配置控件的属性,设计控件的位置、大小、颜色、呈现的文本内容等,达到UI排版布局的要求。
在Android Studio开发环境中,可以在属性面板上以可视化方式设置控件的属性,如图2-2所示,选中控件后,可以在属性面板中为控件设置属性。也可以直接在UI的布局文件中直接编辑控件的属性。两种方式殊途同归,最终的属性配置都保存在布局文件中。还可以在程序代码中配置控件的属性,这种方式可以让程序代码与界面进行交互,经常会在程序中用代码来修改控件属性。
![](https://epubservercos.yuewen.com/28BC1F/27087516004948706/epubprivate/OEBPS/Images/31_02.jpg?sign=1739431382-TTj3HapxEGDBr3I7LzSIWXyzraV65Yji-0-2ff7a2d995447e9ab6ccc547a8651265)
图2-1 常用控件
![](https://epubservercos.yuewen.com/28BC1F/27087516004948706/epubprivate/OEBPS/Images/31_03.jpg?sign=1739431382-ISSueWELCOEqJgmHX03EwpDTWP6PgCPA-0-28c9927e644125e22b5fb6f96333e125)
图2-2 属性面板
UI控件类关系如图2-3所示,View类是所有控件的父类。
![](https://epubservercos.yuewen.com/28BC1F/27087516004948706/epubprivate/OEBPS/Images/32_01.jpg?sign=1739431382-xXuiX438vgLyWQXqkRPTy2EkxymXUZJ6-0-86d8a771905ee26de4c0dfef6571ab76)
图2-3 UI控件类关系图
View类中定义了控件的通用属性,通过学习View类中的通用属性,就可以了解各种控件的通用属性。View类的部分属性如表2-1所示,表中的XML属性省略了前缀“android:”,在布局文件中编辑属性时要加上该前缀。表中还列出了在Java代码中配置属性的方法,大部分属性都有对应的方法供在代码中操作属性。
表2-1 View类的部分属性
![](https://epubservercos.yuewen.com/28BC1F/27087516004948706/epubprivate/OEBPS/Images/32_02.jpg?sign=1739431382-uhziF7vZNlJ5HPBuf7SAd00YlCwWSxIl-0-220b5c6504518e80e40ee7ce5f9aa3b8)
(续)
![](https://epubservercos.yuewen.com/28BC1F/27087516004948706/epubprivate/OEBPS/Images/33_01.jpg?sign=1739431382-ZDtw5bkSp0BSyf9kDJdtiR02DTPpIegw-0-cc580ed096db73025bc8b251fea4d427)