视图View

所有的UI视图都继承于View,都是View的派生类.
View包含两大类,第一种是功能组件(文本,输入框,图片,按钮。。。),第二种就是布局管理
器(ViewGroup)
id:在每一个颗树上,都可以给定一个组件独一无二的id号,用来查找到该组件

1. //两段式命名
2. <TextView
3. android:id = "@+id/tv_hello"
4. ...
5. />
6.
7. 可以在java代码中通过findViewById来查找组件
8. 必须写在setContentView之后
9. setContentView(R.layout.activity_main);
10. TextView tv = (TextView)findViewById(R.id.tv_hello);
- 这两个属性,是属于布局的属性,是指在布局中的宽和高,最终受布局的大小限制
 - 宽layout_width
 - 高layout_height
 -  - match_parent:充满父布局
 - wrap_content:包裹内容
 - 指定大小: 单位是 dp/dip 抽象密度

其他常用属性

  • 所有的View都具备的属性,可以在xml设置,也可以通过java代码来修改
  • background:背景的样式,可以指定颜色,图片,其他drawable
  • 如果不想设置,或者要取消原有的样式,@null
  • 颜色在android中给我们指定了一些常量,使用@android:color/…
  • padding:内边距,指定矩形的边框和内部的内容(自己或者其他组件)
  • layout_margin:外边距,指定矩形的边框和外部的布局之间的距离
  • visibility:
  • visible:默认显示
  • inVisible:隐藏,但是任然占据空间
  • gone: 隐藏,并且不占用空间

基础组件

  • TextView 文本视图
- TextView以及其子类的属性
 - 文本
 - android:text:定制显示的文本内容
 - android:textSize: 字体单位为 sp
 - android:textColor: 字体颜色
 - android:textStyle: 字体样式 粗体,斜体
 - 字数行数
 - android:singleLine:单行模式
 - android:lines:规定指定行数,不满也会填充,多了裁剪掉
 - android:maxLines:最大行数,不满还是包裹内容,多了裁剪
 - android:maxLength:最大字数
 - 设置图片
 - 可以在四个方法(上下左右)设置图片
 - drawable Top,Bottom,Left,Right drawablepadding 指图片和文本之间距离
 - gravity:对齐 top,bottom,left,right,center
 -  -  - 其他
 - autoLike:设置文本的链接方式
 - 跑马灯 文本必须大于一行的内容
 - android:singleLine="true"
 - android:focusable="true"
 - android:focusableInTouchMode="true"
 - android:ellipsize="marquee
  • ImageView 图像视图
1. android:src:前景图片/颜色/drawable
2.
3. android:scaleType 1. centerCrop 挖取中间部分
4. 2. fitXY 直接拉伸 配合adjustViewBounds按照比例拉伸

问题

导入的图片名字乱七八糟。 [a-z][0-9a-z_]{0,}
   2. 图片copyFile,不要选likeFile
   3. text属性,不要去用@string/xxx, android:text="文本内容"
   4. 属性每个组件只能有一个,每个属性都是 唯一的,绝对不允许出现2个相同的属性
   5. 没有宽高。
   6. 自己建立的 xml 文件,必须在Activity中 setContentView(使用这个xml)
   7. 如果将上面的组件高度直接match_parent,底部的看不到了
   8. 所有的布局 都可以设置背景,整体的背景图,就放在外部布局中就可以了

常用布局

布局存放的位置在 res/layout 目录中
每个xml文件,必须只有一棵树(必须只有一个根节点)
所有的布局都继承于ViewGroup,ViewGroup又继承于View,ViewGroup是透明的,没有内
容,主要作为View的容器,同时也可以包裹自身,一般不要超过4层
ViewGroup中定义了 当前层次组件的 layout属性
所有带layout属性的组件,都是 当前的 布局的 属性

1. <ViewGroup1>
2. <ViewGroup2>
3. <TextView1 /> //layout属性由ViewGroup2决定,和ViewGroup1没有关系
4. </ViewGroup2>
5.
6. <ViewGroup3>
7. <ViewGroup3/>
8. </ViewGroup1>
1. ViewGroup.LayoutParams内部类
2. layout_width,layout_height
3. ViewGroup.MarginLayoutParams内部类
4. layout_margin (left,right,top,bottom,start,end)
  1. 他是一个容器,用来装其他的组件,也包括他自身
  2. 他是View的子类,可以使用View的所有属性
  3. xml中布局的属性,来自于内部类LayoutParams

LinearLayout

是一个线性的容器。里面的所有组件都按照水平或者垂直的方向一直排列下去,直到屏幕外
面。

1. 本身的属性: orientation 容器中所有的组件的走向
2. vertical:垂直走向(从上至下) horizontal:水平走向(从左至右)
3.
4. 必须要加的。如果超过1个组件,没有加上,就会报错,默认是水平走向。
5.
6. LinearLayout.LayoutParams
7. layout_gravity:组件在当前行/列中的位置,垂直方向左右移动,水平上下移动
8. layout_weight: 权重 百分比布局
9. 水平方向的时候,只能宽度0dp,高度必须给值
10. 垂直方向的时候,只能高度0dp,宽度必须给值

RelativeLayout(相对布局)

  • 4组 共15个方法
1. 两组针对父窗体的
2. 1. 相对于父窗体的对齐方式 boolean
3. centerInParent centerHorizontal centerVertical
4. 2. 四个针对父窗体的位置的方式 boolean
5. alignParentRight,Left,Top,Bottom
6.
7. 两组针对其他组件的
8. 3. 在其他组件的四个方向 @id
9. above,below,toLeftOf,toRightOf
10. 4. 与其他组件对齐 @id
11. alignLeft,Top,Bottom,Right

不常用布局

  1. TableLayout
    每个TableRow单独占一行,如果不写组件也是单独占一行,不需要设置宽高,使用
    weight来调整大小
  2. FrameLayout
    每个组件都是从左上角开始排列,叠在一起,一般只是作为其他组件(Fragment)的容器
  3. AbsoluteLayout 2.3过期了
    没有太大的意义了,但是很多面试题很老,还在提这个布局(layout_x,layout_y)
  4. GridLayout 4.0才加上的
    功能和GridView相同,并且没有GridView灵活,没人用。

设置布局

在activity的onCreate方法中,使用 setContentView 的方法来设置 已经写好的布局

1. @Override
2. protected void onCreate(Bundle savedInstanceState) {
3. super.onCreate(savedInstanceState);
4. //R.layout.activity_main是layout中activity_main.xml在R文件中生成的
索引号
5. setContentView(R.layout.activity_main);
6. }

后记

1. ViewGroup.LayoutParams:layout_width,layout_height MATCH_PARENT =-1,WRA
P_CONETENT=-2
2. ViewGroup.MarginLayoutParams:layout_marginLeft,Top,Right,Bottom,Start,
End
3.
4. LinearLayout: orientation:vertical垂直,horizontal水平,gravity:元素的排
列
5. LinearLayout.LayoutParams: layout_weight,layout_gravity
6.
7.
8. RelativeLayout.LayoutParams 15个属性
9. true
10. 3 centerInParent,centerVertical,centerHorizontal
11. 4 alignParentRight,Left,Top,Bottom
12.
13. 在@id组件的那个方向,或者对齐
14. 4 above,below,toLeftOf,toRightOf
15. 4 alignRight,Left,Top,Bottom
1. View: 画线,画点,画圆。
2. id: 给组件取个名字,方便找到他,或者依赖他。
3. background: 背景图片或者颜色
4. padding: 内边距,组件和内容之间的距离
5. visibility:是否显示 visible显示,inVisible隐藏但是占空间,gone隐藏并且不占空间
1. TextView:文本框
2. text,textSize,textColor,textStyle
3. lines,maxLines,maxLength,singleLine
1. ImageView:图像视图
2. src: 前景图,默认居中显示,背景图默认就拉伸
3. scaleType: 缩放模式 fitXY,centerCrop
4. adjustViewBounds: 按比例拉伸