布局的介绍:
View类的常用xml属性:
LinearLayout
RelativeLayout
Android UI控件及UI组件
基本控件:——TextView:
基本控件:——EditText:
基本控件:——Button:
在代码中设置View的常用xml属性及方法说明
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三种布局。
java.lang.Object
↳ android.view.View
android:id
android:background
android:onClick 为该控件的单击事件绑定监听器
android:padding 设置控件四周的填充区域
android:visibility 设置该控件是否可见(invisible/visible/gone)
android:alpha 设置该组件透明度(0-1之间的数值)
android:layout_height 子组件的布局高度
android:layout_width 子组件的布局宽度
android:layout_margin 设置子组件的外边距
(一)、概念:线性布局控制其中的控件或组件横向或纵向排列。在线性布局布局中,每一行或每一列只能放单独一个控件。线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。
线性布局的默认方向是水平方向(Horizontal),还有一个选项是vertical。
(二)、LinearLayout的常用属性:
1.android:orientation 定义布局内控件或组件的排列方式
可选项:vertical 、 horizontal
2.android:layout_width 定义控件的宽度
可选项:fill_parent / match_parent/ wrap_content/绝对数值
备注:fill_parent / match_parent的效果完全一致,都是填充整个父控件。但是自2.2版本开始推荐使用match_parent 。wrap_content指的是该控件的宽度正好包裹内容物。
3.android:layout_height 定义控件的高度
可选项:fill_parent / match_parent/ wrap_content/绝对数值
备注:fill_parent / match_parent的效果完全一致,都是高度填充整个父控件。wrap_content指的是该控件的高度正好包裹内容物。
4.android:id 设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。
设置id的格式为:android:id = "@+id/id的名字"
5.android:background 设置控件的背景颜色或背景图片
例如:android:background="#ffffff"
android:background="@drawable/图片名称"
颜色有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 设置布局管理器内哪个控件不受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 该控件位于父布局控件的水平中心位置吗?
(一)、控件名称:【标红色的为常用的】
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 列表视图【最重要的UI组件】、 网格视图
ScrollView 滚动视图
ExpandableListView 可展开列表视图
WebView 网页视图
SearchView 搜索框
TabHost 书签选项卡
Notification 、Toast 通知 、 吐司(短时提醒)
Menu(OptionMenu /SubMenu、ContextMenu) 菜单(选项菜单、上下文菜单)
ImageSwitcher、TextSwitcher 、 ViewPager 图像切换器、文本切换器
ActionBar 动作导航条
(一)、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 类结构:
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类结构:
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
所以Button继承了TextView的所有属性。
【特别补充:】sp、dp、dip、dpi 、 pt、px等单位的区别?【重点】
dpi dpi指像素密度。dots per inch ,即每英寸内像素点的个数。它不是表示长度的单位。
在android中认为:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技术的增长,实际dpi已经超出这个定义。
dip dimension 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中组件的几乎所有属性都提供了两种方式来控制其行为,所以我们既可以在xml布局中直接静态赋值,也可以在代码中通过对应的方法进行动态控制,关系如下: