Android基础控件和布局

Android之路—初章

接下来的博客,记录Android学习的的过程,有一个梳理和整理的过程。

走向Android这条路,要有扎实的Java的语法基础和思想,不是说学好Java后,才开始Android的编程,其实可以同时进行,这里暂且不谈Java,只说Android。

Android—-基本布局

因为是从慕课网开始学习,入门篇讲解的是控件,让我着实踩了不少坑,一个东西的框架没有学好,就着手其中的内容,是非常不明智的(新人的亲身体验)。

布局,就是Android一个界面的框架。

布局可以是全局的,也可以是局部的,因此,大布局里面可以包含小布局,这里似乎也映射了继承和封装的思想。

Android studio中的这张截图很能说明这种包含性

布局包含性

在任何一个界面中,有一个基础的大布局充满界面,根据不同的需求在不同的地方添加不同的布局,可以更好的控制控件所处的位置,体现界面的观赏性。

1.LinearLayout线性布局

正如它的名字,线性布局,它所有控件的位置都是线性的,那么它的内部控件排列方式就只有两种,垂直和水平,但它控件的对齐方式有很多。

xml属性 相关方法 说明
android:baselineAligned setBaselineAligned(boolean) 若为false,则阻止该布局管理器与其子元素基线对齐
android:divider setDividerDrawable(Drawable) 设置垂直分布时,控件之间会有分割线
android:showDividers setShowDividers(int) 与divider一同使用,控制分割线的位置
android:gravity setGravity(int) 设置布局内部控件的对齐方式
android:orientation setOrientation 设置布局内部控件的排列方式

用如下代码表示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!--排列方式-->
android: orientation = "vertical" //垂直
android: orientation = "horizontal" //水平

<!--对齐方式-->
android: gravity = "top" //将对象放在其容器的顶部,不改变其大小
android: gravity = "bottom" //将对象放在其容器的底部,不改变其大小
android: gravity = "left" //将对象放在其容器的左侧,不改变其大小
android: gravity = "right" //将对象放在其容器的右,不改变其大小
android: gravity = "center" //将对象横向居中,不改变其大小
android: gravity = "fill" //必要的时候增加对象的横纵向大小,以完全充满容器

android: gravity = "center_vertical" //垂直居中对齐
android: gravity = "center_horizontal" //水平居中对齐
android: gravity = "fill_vertical" //垂直填充
android: gravity = "fill_horizontal" //水平填充
android: gravity = "clip_vertical" //垂直方向裁剪
android: gravity = "clip_horizontal" //水平方向裁剪

2.RelativeLayout相对布局

相对布局,控件之间的位置都是相对的。

XML属性 相关方法 说明
android: gravity stGravity(int) 设置管理布局管理器内组件对齐方式
android:ignoreGravity setignoreGravity(int) 设置哪个控件不受Gravity属性的影响

其中, gravity属性和线性布局相同,而ignoreGravity属性设置的是布局中的某一个控件id

1
android:ignoreGravity="@id/xxx"

它本身也是相对的,相对于它的容器(可能是一个界面,也可能是一个布局),它有如下三种属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!--属性值是Boolean类型, "true" 或者 "false"-->
android: layout_centerHrizontal //水平居中
android: layout_centerVertical //垂直居中
android: layout_centerInparent //相对于父元素完全居中。
android: layout_alignParentBottom //位于父元素的下边缘
android: layout_alignParentTop //位于父元素的上边缘
android: layout_alignParentLeft //位于父元素的左边缘
android: layout_alignParentRight //位于父元素的右边缘

<!--属性值是其他元素的id, "@id/XXX"-->
android: layout_below //在某元素的下方
android: layout_above //在某元素的上方
andorid: layout_toRightOf //在某元素的右方
android: layout_toLeftOf //在某元素的左方
android: layout_alignBottom //和某元素下方对齐
android: layout_alignTop //和某元素上方对齐
android: layout_alignRight //和某元素右方对齐
android: layout_alignLeft //和某元素左方对齐

<!--属性值是数值, "XXdp" -->
android: layout_marginLeft //离某元素左边缘的距离
android: layout_marginRight //离某元素右边缘的距离
android: layout_marginTop //离某元素上边缘的距离
android: layout_marginBottom //离某元素下边缘的距离

Android—基础控件

作为Android新手,两个基础控件是经常使用的,文本显示和按钮。

1.TextView文本显示

该控件用来显示文本,它常用属性如下:

1
2
3
4
5
6
7
8
9
10
11
12
<!--必须要有几个属性-->
android: id = "@+id/XXX" //控件的id
android: layout_width = "" //控件的宽度
android: layout_height = "" //控件的高度

<!--其他功能性属性-->
android: text //显示的文本
android: textSize //文本大小
android: textColor //文本字体颜色
android: textScaleX //设置文字之间间隔

<!--还有很多暂不列出-->

2.Button按钮

该控件配合点击事件使用,它也有一些必要属性:

1
2
3
4
5
6
7
8
9
/*在java代码中创建对象,并设置监听事件*/
private Button btn; //初始化一个按钮的对象
btn = (Button) findViewById(R.id.button); //让对象找到对应的按钮id
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*在这里添加你所想实现的事件代码*/
}
});

其实任何一个控件都必须有这些属性,Button的样式默认是button

对,很丑,所以改变button样式那又是另一个东西了,之后的博客会有说、

这里简单说一下,监听事件。控件大部分都有监听事件,当点击或者其他手势动作时,触发相应的事件

1
2
3
4
5
6
7
8
9
/*在java代码中创建对象,并设置监听事件*/
private Button btn; //初始化一个按钮的对象
btn = (Button) findViewById(R.id.button); //让对象找到对应的按钮id
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*在这里添加你所想实现的事件代码*/
}
});