Android 常用布局及基本UI控件


二、布局的介绍:【了解】

1、在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子类。(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。

2、在2.2操作系统中将AbsoluteLayout过期。而目前TableLayout也逐渐少用。

3、在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器界面)

总之,Android中一共有六种布局。目前推荐使用RelativeLayout、LinearLayout、GridLayout三种布局。

(二)、View及其子元素常用属性:(各种布局及控件的共同属性)

  1. android:id
  2. android:background 
  3. android:onClick     为该控件的单击事件绑定监听器
  4. android:padding    设置控件四周的填充区域
  5. android:visibility    设置该控件是否可见(invisible/visible/gone)
  6. android:alpha        设置该组件透明度(0-1之间的数值)
  7. android:layout_height      子组件的布局高度
  8. android:layout_width        子组件的布局宽度
  9. android:layout_margin     设置子组件的外边距

四、LinearLayout:【掌握】

        (三)、LinearLayout的特有属性:【重新归纳:去除公共属性后的特有属性】

                1、android:orientation    布局管理器内组件的排列方式

                2、android:gravity    设置布局管理器内组件的对齐方式

                3、android:weightSum 权重的总和 

        (四)、 LinearLayout 子元素的特有属性:

                1、android:layout_weight    子元素在 LinearLayout 中所占的权重

                2、android:layout_gravity     子元素在 LinearLayout 中的对齐方式

(二)、RelativeLayout特有属性:

                1、android:gravity    设置布局容器内子控件的对齐方式    

                2、android:ignoreGravity    设置布局管理器内哪个控件不受gravity属性的影响

(三)、RelativeLayout子元素的特有属性:LayoutParams

    A、第一组:指兄弟控件之间的相对位置。该组属性的值是另一个控件的id。

  1. layout_toRightOf      该控件在哪个控件的右侧
  2. layout_toLeftOf        该控件在哪个控件的左侧
  3. layout_above           该控件在哪个控件的上侧
  4. layout_below            该控件在哪个控件的下侧

    B、第二组:指兄弟控件之间的对齐关系。该组属性的值是另一个控件的id。

  1. layout_alignRight      该控件与哪个控件的右对齐
  2. layout_alignLeft        该控件与哪个控件的左对齐
  3. layout_alignTop        该控件与哪个控件的顶对齐
  4. layout_alignBottom   该控件与哪个控件的底对齐

    C、第三组:指控件与父布局之间的对齐关系。该组属性的值是true或者false。

  1. layout_alignParentRight               该控件与父布局控件的右对齐吗?
  2. layout_alignParentLeft                 该控件与父布局控件的左对齐吗?
  3. layout_alignParentTop                 该控件与父布局控件的顶端对齐吗?
  4. layout_alignParentBottom            该控件与父布局控件的底部对齐吗?
  5. layout_centerInParent                  该控件位于父布局控件的中心位置吗?
  6. layout_centerVertical                    该控件位于父布局控件的垂直中心位置吗?
  7. layout_centerHorizontal                该控件位于父布局控件的水平中心位置吗?

六、GridLayout:网格布局

(一)、GridLayout布局属性:

1、android:alignmentMode

        alignBounds -- 对齐子视图边界。

        alignMargins -- 对齐子视图边距。

2、android:columnCount属性说明:GridLayout的最大列数

3、android:rowCount属性说明:GridLayout的最大行数

4、android:orientation属性说明:GridLayout中子元素的布局方向。有以下取值:horizontal -- 水平布局。vertical -- 竖直布局。

5、android:columnOrderPreserved属性说明: 设置该网格布局是否保留列序号。默认是true。

6、android:rowOrderPreserved属性说明: 设置该网格布局是否保留行序号。默认是true。

7、android:useDefaultMargins属性说明: 设置GridLayout使用默认的边距。默认值是false。

(二)、GridLayout子元素的属性:

1android:layout_column="1",表示在第2列显示该控件。

2android:layout_row="1",表示在第2行显示该控件

3android:layout_columnSpan="2",表示该控件占2列。

4android:layout_rowSpan="2",表示该控件占2行。

5android:layout_gravity

  • top                      -- 控件置于容器顶部,不改变控件的大小。
  • bottom                -- 控件置于容器底部,不改变控件的大小。
  • left                     -- 控件置于容器左边,不改变控件的大小。
  • right                   -- 控件置于容器右边,不改变控件的大小。
  • center_vertical     -- 控件置于容器竖直方向中间,不改变控件的大小。
  • fill_vertical          -- 如果需要,则往竖直方向延伸该控件。
  • center_horizontal -- 控件置于容器水平方向中间,不改变控件的大小。
  • fill_horizontal      -- 如果需要,则往水平方向延伸该控件。
  • center                -- 控件置于容器中间,不改变控件的大小。
  • fill                     -- 如果需要,则往水平、竖直方向延伸该控件。
  • clip_vertical        -- 垂直剪切,剪切的方向基于该控件的top/bottom布局属性。若该控件的gravity是竖直的:若它的gravity是top的话,则剪切该控件的底部;若该控件的gravity是bottom的,则剪切该控件的顶部。
  • clip_horizontal     -- 水平剪切,剪切的方向基于该控件的left/right布局属性。若该控件的gravity是水平的:若它的gravity是left的话,则剪切该控件的右边;若该控件的gravity是  right的,则剪切该控件的左边。
  • start                  -- 控件置于容器的起始处,不改变控件的大小。
  • end                   -- 控件置于容器的结束处,不改变控件的大小。

七、Android UI控件及UI组件:

(一)、控件名称:【标红色的为常用的】

  1. TextView        文本视图
  2. EditText         文本编辑框
  3. Button            按钮
  4. ImageView、Gallery   图像视图、画廊(建议过期)
  5. ImageButton    图片按钮
  6. ToggleButton 、Switch    开关按钮、开关
  7. RadioButton    单选按钮
  8. CheckBox       多选框
  9. Spinner           下拉列表
  10. AutoCompleteTextView   自动完成文本框
  11. ProgressBar    进度条
  12. SeekBar          拖动条
  13. RatingBar        星级评分条
  14. TimePicker、DatePicker   时间选择器、日期选择器
  15. AnalogClock、DigitalClock    模拟时钟、数字时钟
  16. Dialog(AlertDialog、ProgressDialog、TimePickerDialog、DatePickerDialog)提示对话框、进度对话框、时间选择对话框、日期选择对话框
  17. ListView、GridView        列表视图【最重要的UI组件】、 网格视图 
  18. ScrollView      滚动视图
  19. ExpandableListView   可展开列表视图
  20. WebView        网页视图
  21. SearchView    搜索框
  22. TabHost         书签选项卡
  23. Notifica tion 、Toast         通知
  24. Menu(OptionMenu /SubMenu、ContextMenu)    菜单(选项菜单、上下文菜单)
  25. ImageSwitcher、TextSwitcher   、   ViewPager 图像切换器、文本切换器
  26. ActionBar        动作导航条

八、基本控件:——TextView:

(二)、TextView 常用属性:

1、andorid:text               设置文本的内容

2、 android:textColor     设置文本的颜色

3、 android:textSize       设置文本的字体大小(sp)

4、andorid:height          设置文本的高度,以像素为单位

5、 android:width            设置文本的宽度,以像素为单位

6、 android:inputType     设置文本的类型。例如是普通文本,还是email,password,数字等等。

7、 android:singleLine     设置文本是否是单行显示。

8、android:gravity     设置文本框内文本的对齐方式。可选项有:top、bottom、left、right、center、fill、center_vertical、center_horizontal、fill_horizontal等等。这些属性值也可以同时指定,各属性值之间用竖线隔开。例如right|bottom

9、android:drawableLeft    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

10、android:drawableRight    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

11、android:drawableTop    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

12、android:drawableBottom   用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

13、android:autoLink   给指定的文本增加可单击的超链接。可选项为:none、web、email、phone、map和all。

        多个选项之间使用“|”分隔,也可以使用all。

14、android:hint    设置当文本框内文本内容为空时,默认显示的提示性文字。

【补充:】

1、android:textAllCaps="true"     设置所有字母都大写

2、android:ellipsize="end"           文字过长,设置省略号。可选项:start , end ,middle,marquee

  • android:ellipsize="start" 省略号在开头        
  • android:ellipsize="middle" 省略号在中间        
  • android:ellipsize="end" 省略号在结尾        
  • android:ellipsize="marquee" 跑马灯显示

       【备注:】要实现跑马灯效果。要同时具有以下属性。

  •     android:ellipsize="marquee" 
  •     android:singleLine="true"  
  •     android:focusable="true" 
  •     android:focusableInTouchMode="true" 
  •     android:marqueeRepeatLimit="marquee_forever"

九、基本控件:——EditText:

(二)、android:inputType的可选项:





  1. android:inputType="textPersonName" 
  2. android:inputType="textPassword" 
  3. android:inputType="numberPassword"      只可以输入数字
  4. android:inputType="textEmailAddress" 
  5. android:inputType="phone"      只允许输入数字,括号等特殊符号,不可以输入母。
  6. android:inputType="textPostalAddress"   
  7. android:inputType="time" 
  8. android:inputType="date" 
  9. android:inputType="number





sp、dp、dip、pt、px等单位的区别

  1. dpi    dpi指像素密度。
  2. dip    device independent pixels  ,即与设备无关的像素。目前这个单位已经被dp所取代,而不建议使用dip。
  3. dp     与dip的概念一样。不过dp已经取代了dip。在Android中用来表示非文字大小的尺寸。例如:外边距、内填充等。
  • px = dp * (dpi / 160)
  • 3.7寸屏幕,分辨率320*480手机上,正好1px = 1dp。
  1. sp      scale  independent  pixel  ,即与缩放比例无关的像素。在android中常用来表示文字大小。
  2. px      表示像素。
  3. pt      point磅。1磅=1/74英寸
  • xlarge 屏幕至少:960dp x 720dp 
  • large 屏幕至少 :640dp x 480dp 
  • normal 屏幕至少 :480dp x 320dp 
  • small 屏幕至少 :426dp x 320dp
  • 总之:dp是用来定义非文字的尺寸,sp用来定义文字大小。px只用于产生一条一像素的分割线时使用。