android六大布局和UI组件
16lz
2021-01-26
一:android之六大布局 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 三种布局。 所以下面我们只着重介绍RelativeLayout、LinearLayout、GridLayout三大布局。
(二)、LinearLayout的常用属性: 1.android:orientation 定义布局内控件或组件的排列方式 可选项:vertical 、 horizontal
【备注:】 颜色有RGB颜色格式和ARGB格式。RGB是红绿蓝三原色。而ARGB是带alpha的三原色,即有透明度的三原色。 #FFFFFF 代表白色 #000000 黑色 #FFFFFFFF 完全不透明 #00FFFFFF 完全透明 #88FFFFFF 半透明
6.android:layout_weight 设置控件的权重。即各控件在水平或者垂直方向上平均分配。 备注:如果是水平方向设置权重,要将android:layout_width设置为0dp,如果是垂直方向上使用权重,要将android:layout_height设置为0dp。否则权重容易受到高度或宽度的干扰而出现偏差。
7.android:gravity 该属性用来控制该View的内容物的位置。 如果该属性是定义在布局节点中,则该布局中所有控件的位置都受到这个属性的控制。 如果该属性出现在Button、TextView、EditText等控件中,则用来控制这些控件上的文字的位置。 可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。 【备注:】本属性与android:layout_gravity不同。
8.android:layout_gravity 该属性用于设置控件相对于容器的对齐方式。 可选项有:top、bottom、left、right、center_vertical、center_horizontal 、fill_vertical 、 center 、fill等等。 这些可选项中不是适用于每一种布局。在垂直线性布局中,android:gravity为bottom不起作用;而水平线性布局中,android:gravity为right不起作用。 【备注:】而本属性是android:layout_gravity属性,与 android:gravity 属性不同。
(三)、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="id" 设置布局管理器内哪个控件不受gravity属性的影响
(三)、RelativeLayout子元素的特有属性: LayoutParams A、第一组:指 兄弟控件 之间的相对位置。该组属性的值是另一个控件的id。
B、第二组:指 兄弟控件之间 的对齐关系。该组属性的值是另一个控件的id。
C、第三组:指 控件与父布局 之间的对齐关系。该组属性的值是true或者false。
2、android: layout_row 属性说明: 该控件所在行。例如,android:layout_row="0",表示在第1行显示该控件;android:layout_row="1",表示在第2行显示该控件。它和 android:layout_column类似。
3、android: layout_columnSpan 属性说明: 列合并。即该控件所占的列数。例如,android:layout_columnSpan="2",表示该控件占2列。 4、android: layout_rowSpan 属性说明: 行合并。即该控件所占的行数。例如,android:layout_rowSpan="2",表示该控件占2行。
5、android: layout_gravity 属性说明:该控件的布局方式。选项值:
什么是View--->Object 这个类是用户接口的基础构件。 View 表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理。 View 是所有widget类的基类,Widget 类用于创建交互式UI构件(按钮,输入框等)。 View 类的ViewGroup子类是layout 的基类,Layout是一个不可见的容器,它保存着View(或ViewGroup)并定义这些View的layout 属性。 可以说View类是用户接口类中最重要的一个类。
(一)、控件名称:【标红色的为常用的】
八、基本控件:——TextView: (一)、TextView类结构: java.lang.Object ↳ android.view.View ↳ android.widget.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
九、基本控件:——EditText: (一)、 EditText 类结构: java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.EditText
所以 EditText 继承了TextView的所有属性。
(二)、android: inputType 的可选项:
十、基本控件:——Button: (一)、Button类结构: java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.Button
所以Button继承了TextView的所有属性。
【特别补充:】 sp、dp、dip、pt、px等单位的区别 ?【 重点 】
目前推荐使用 RelativeLayout 、 LinearLayout、GridLayout 三种布局。 所以下面我们只着重介绍RelativeLayout、LinearLayout、GridLayout三大布局。
LinearLayout:
LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的 containers, 超过边界时,某些控件将缺失或消失。 因此一个垂直列表的每一行只会有一个widget或者是container,而不管他们有多宽,而一个水平列表 将会只有一个行高(高度为最高子控件的高度加上边框高度)。LinearLayout保持其所包含的widget或者是container之间的间隔以及互相对齐 (相对一个控件的右对齐、中间对齐或者左对齐)。 (一)、概念:线性布局控制其中的控件或组件横向或纵向排列。线性布局布局中, 每一行或每一列只能放一个控件 。并且线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。 线性布局的 默认方向 是水平方向( Horizontal )。vertical(二)、LinearLayout的常用属性: 1.android:orientation 定义布局内控件或组件的排列方式 可选项:vertical 、 horizontal
【备注:】 颜色有RGB颜色格式和ARGB格式。RGB是红绿蓝三原色。而ARGB是带alpha的三原色,即有透明度的三原色。 #FFFFFF 代表白色 #000000 黑色 #FFFFFFFF 完全不透明 #00FFFFFF 完全透明 #88FFFFFF 半透明
6.android:layout_weight 设置控件的权重。即各控件在水平或者垂直方向上平均分配。 备注:如果是水平方向设置权重,要将android:layout_width设置为0dp,如果是垂直方向上使用权重,要将android:layout_height设置为0dp。否则权重容易受到高度或宽度的干扰而出现偏差。
7.android:gravity 该属性用来控制该View的内容物的位置。 如果该属性是定义在布局节点中,则该布局中所有控件的位置都受到这个属性的控制。 如果该属性出现在Button、TextView、EditText等控件中,则用来控制这些控件上的文字的位置。 可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。 【备注:】本属性与android:layout_gravity不同。
8.android:layout_gravity 该属性用于设置控件相对于容器的对齐方式。 可选项有:top、bottom、left、right、center_vertical、center_horizontal 、fill_vertical 、 center 、fill等等。 这些可选项中不是适用于每一种布局。在垂直线性布局中,android:gravity为bottom不起作用;而水平线性布局中,android:gravity为right不起作用。 【备注:】而本属性是android:layout_gravity属性,与 android:gravity 属性不同。
(三)、LinearLayout的特有属性:【重新归纳:去除公共属性后的 特有属性 】 1、android: orientation 布局管理器内组件的排列方式 2、android: gravity 设置布局管理器内组件的对齐方式 3、android:weightSum
(四)、 LinearLayout 子元素的特有属性: 1、android: layout_weight 子元素在 LinearLayout 中所占的权重 2、android: layout_gravity 子元素在 LinearLayout 中的对齐方式
RelativeLayout:
(一)、概念:指按着控件之间的相对位置来进行布局。 RelativeLayout是一个允许子视图相对于其他兄弟视图或是父视图显示的视图组(通过ID指定)。 每个视图的位置能够指定它相对于兄弟(比如在其他视图的左边或是下边)或是父视图(这里是指相对布局容器, 比如底部对齐、中间偏左)的位置。(二)、RelativeLayout特有属性: 1、android: gravity 设置布局容器内子控件的对齐方式 2、android: ignoreGravity="id" 设置布局管理器内哪个控件不受gravity属性的影响
(三)、RelativeLayout子元素的特有属性: LayoutParams A、第一组:指 兄弟控件 之间的相对位置。该组属性的值是另一个控件的id。
- layout_toRightOf 该控件在哪个控件的右侧
- layout_toLeftOf 该控件在哪个控件的左侧
- layout_above 该控件在哪个控件的上侧
- layout_below 该控件在哪个控件的下侧
B、第二组:指 兄弟控件之间 的对齐关系。该组属性的值是另一个控件的id。
- layout_alignRight 该控件与哪个控件的右对齐
- layout_alignLeft 该控件与哪个控件的左对齐
- layout_alignTop 该控件与哪个控件的顶对齐
- layout_alignBottom 该控件与哪个控件的底对齐
C、第三组:指 控件与父布局 之间的对齐关系。该组属性的值是true或者false。
- layout_alignParentRight 该控件与父布局控件的右对齐吗?
- layout_alignParentLeft 该控件与父布局控件的左对齐吗?
- layout_alignParentTop 该控件与父布局控件的顶端对齐吗?
- layout_alignParentBottom 该控件与父布局控件的底部对齐吗?
- layout_centerInParent 该控件位于父布局控件的中心位置吗?
- layout_centerVertical 该控件位于父布局控件的垂直中心位置吗?
- layout_centerHorizontal 该控件位于父布局控件的水平中心位置吗?
GridLayout:
1、android: layout_column 属性说明: 显示该控件的列。例如,android:layout_column="0",表示在第1列显示该控件;android:layout_column="1",表示在第2列显示该控件。2、android: layout_row 属性说明: 该控件所在行。例如,android:layout_row="0",表示在第1行显示该控件;android:layout_row="1",表示在第2行显示该控件。它和 android:layout_column类似。
3、android: layout_columnSpan 属性说明: 列合并。即该控件所占的列数。例如,android:layout_columnSpan="2",表示该控件占2列。 4、android: layout_rowSpan 属性说明: 行合并。即该控件所占的行数。例如,android:layout_rowSpan="2",表示该控件占2行。
5、android: 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 -- 控件置于容器的结束处,不改变控件的大小。
什么是View--->Object 这个类是用户接口的基础构件。 View 表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理。 View 是所有widget类的基类,Widget 类用于创建交互式UI构件(按钮,输入框等)。 View 类的ViewGroup子类是layout 的基类,Layout是一个不可见的容器,它保存着View(或ViewGroup)并定义这些View的layout 属性。 可以说View类是用户接口类中最重要的一个类。
(一)、控件名称:【标红色的为常用的】
- TextView 文本视图
- EditText 文本编辑框
- Button 按钮
- ImageView、Gallery 图像视图、画廊(建议过期)
- ImageButton 图片按钮
- ToggleButton 、Switch 开关按钮、开关
- RadioButton 单选按钮
- CheckBox 多选框
- Spinner 下拉列表
- AutoCompleteTextView 自动完成文本框
- ProgressBar 进度条
- SeekBar 拖动条
- RatingBar 星级评分条
- TimePicker、DatePicker 时间选择器、日期选择器
- AnalogClock、DigitalClock 模拟时钟、数字时钟
- Dialog(AlertDialog、ProgressDialog、TimePickerDialog、DatePickerDialog)提示对话框、进度对话框、时间选择对话框、日期选择对话框
- ListView、GridView RecyclerView(5.0之后新控件) 列表视图【最重要的UI组件】、 网格视图
- ScrollView 滚动视图
- ExpandableListView 可展开列表视图
- WebView 网页视图
- SearchView 搜索框
- TabHost 书签选项卡
- Notification 、Toast 通知 、 吐司(短时提醒)
- Menu(OptionMenu /SubMenu、ContextMenu) 菜单(选项菜单、上下文菜单)
- ImageSwitcher、TextSwitcher 、 ViewPager 图像切换器、文本切换器
- ActionBar ToolBar 动作导航条
八、基本控件:——TextView: (一)、TextView类结构: java.lang.Object ↳ android.view.View ↳ android.widget.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: (一)、 EditText 类结构: java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.EditText
所以 EditText 继承了TextView的所有属性。
(二)、android: inputType 的可选项:
- android:inputType="textPersonName"
- android:inputType="textPassword"
- android:inputType="numberPassword" 只可以输入数字
- android:inputType="textEmailAddress"
- android:inputType="phone" 只允许输入数字,括号等特殊符号,不可以输入字母。
- android:inputType="textPostalAddress"
- android:inputType="time"
- android:inputType="date"
- android:inputType="number"
十、基本控件:——Button: (一)、Button类结构: java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.Button
所以Button继承了TextView的所有属性。
【特别补充:】 sp、dp、dip、pt、px等单位的区别 ?【 重点 】
- dpi dpi指像素密度。dots per inch ,即每英寸内像素点的个数。它不是表示长度的单位。
- 在android中认为:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技术的增长,实际dpi已经超出这个定义范围。
- dip device independent pixels ,即与设备无关的像素。目前这个单位已经被dp所取代,而不建议使用dip。
- dp 与dip的概念一样。不过dp已经取代了dip。在Android中用来表示非文字大小的尺寸。例如:外边距、内填充等。
- px = dp * (dpi / 160)
- 3.7寸屏幕,分辨率320*480手机上,正好1px = 1dp。
- sp scale independent pixel ,即与缩放比例无关的像素。在android中常用来表示文字大小。
- px 表示像素。因为同样是200px,但是在不同手机下显示的大小是不同的。
- pt point磅。1磅=1/74英寸
- xlarge 屏幕至少:960dp x 720dp
- large 屏幕至少 :640dp x 480dp
- normal 屏幕至少 :480dp x 320dp
- small 屏幕至少 :426dp x 320dp
- 总之:dp是用来定义非文字的尺寸,sp用来定义文字大小。px只用于产生一条一像素的分割线时使用。
更多相关文章
- 【Android】解决ScrollView中嵌套EditText时的滑动滚动冲突
- android TextInputLayout 更换系统自带眼睛图标
- LayoutInflater的使用
- 赵雅智:Android短信发送器
- Android(安卓)两层嵌套tab,Spinner点击出错解决办法
- No resource found that matches the given name (at 'xxx' with
- kotlin配置
- Android(安卓)众多的布局属性详解
- Android应用开发之( TableLayout中stretchColumns、shrinkColumns