天天看点

Android学习笔记(一)布局类

View是用户界面组件的共同父类,几乎所有的用户界面组件都是继承View类而实现的。

对View类及其子类可以进行属性设置,可以在布局文件XML中设置,也可以在Java代码文件中动态设置。

属性 对应常用方法 说明
android:background setBackgroundColor(int color) 设置背景颜色
android:id setId(int) 添加动态图片需要
findViewById() 为组件设置可通过sindViewById方法获取的标识符
android:alpha setAlpha(float) 设置透明度,取值[0 ,1]之间
android:visibility setVisibility(int) 设置组件的可见性
android:clickable setClickable(boolran) 设置组件是否响应单机事件

文本标签

  • 文本标签TextView用于显示文本内容,是最常用的组件之一。
方法打 功能
getText(); 获取文本标签的文本内容
setText(CharSequencetext); 设置文本标签的文本内容
setTextSize(float); 设置文本标签的文本大小
setTextColor(intcolor); 设置文本标签的文本颜色
  • 文本标签TextView常用的XML文件元素
元素属性 说明
android:id 文本标签标识
android:layout_width 文本标签TextView的宽度,通常取值"match_parent"(布满窗口)或以设备独立像素dp为单位的固定值
android:layout_height 文本标签TextView的高度,通常取值"wrap_content"(文本的高)或以设备独立像素dp为单位的固定值
android:text 文本标签TextView的文本内容
adnroid:textSize 文本标签TextView的文本大小

扩充

XML文件中通过使用"@"前缀来引入对一个资源的引用
引入格式:@[package:]type/name
package表示资源所在包名,但如果引用的是我们自己包中的资源,就不需要指定包名,package可以省略不写。type是XML子节点名,name是XML属性名。
EX1:
android:text="@string/hello"
表示引入一个string类型的资源,
属性名叫hello
属性值可以在res目录下对应XML文件中新建或修改
EX2:
android:id="@+id/textView1"
表示新增一个id资源,命名为textView1
           

页面布局文件:activity_main.xml

设计控制文件MainActivity.java

可以在控制文件MainActivity.java源文件中与布局文件(activity_main.xml)中文本标签建立关联。然后对该文本标签组件进行操作

public class MainActivity extends Activity
{
	private TextView txt;----------->声明文本标签对象
	public void onCreate(Bundle saveInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		txt = (TextView)findViewById(R.id.textView1);--------->与布局文件文本标签建立关联
		txt.setTextColor(Color.WHITE);--------->设置文本颜色
	}
}
           

获取布局文件中的空间对象

private TextView txt;---------->创建一个TextView对象
txt = (TextView)findViewById(R.id.textView1);
		||				||			||
	将获取到的View	根据id获取对应	布局文件中名为textView1的id
	对象强制转换为		View对象
	TextView类型		
	然后便可对盖控件对象进行各种操作
           

关于R.xx.xxx的解释

setContentView(R.layou.t activity_main )

findViewByld(R.idtextView1 )

R是类名,对应类文件是R.java,	R.java是编译器自动生成,会自动收录当前应用中所有的资源,并根据这些资源建立对应的索引(可以理解为变量名和变量值----对应的资源索引库。)
layout即R类中的内部类,activity_main则是该类中的静态变量。
id即R类中的内部类
textView1则是该类中的静态变量
           

Android布局管理

Android系统的布局管理指的是在XML布局文件中设置组件的大小、间距、排列及对齐方式等。

Android系统中常见的布局方式有:

LinearLayout、FrameLayout、TableLayout、RelativeLayout、AbsoluteLayout、GridLayout、ConstraintLayout

1.布局文件的规范

Android系统应用程序的XML布局文件有如下规范:
(1).布局文件作为应用项目的资源存放在res/layout目录下,其扩展名为.xml;
(2).布局文件的根节点通常是一个布局方式,在根节点内可以添加组件作为节点;
(3).布局文件的根节点必须包含一个命名空间:
		xmlns:android="http://schemas.android.com/apk/res/android"
(4).如果要在实现控制功能的Java程序中控制界面中的组件,则必须为界面文件中的组件定义一个ID,其定义格式为:
		android:id="@+id/<组件ID>"
           

布局文件的重要属性值

(1).设置组件大小的属性值
~	wrap_content:	根据组件内容的大小来决定组件的大小;
~	match_parent:	使组件填充所在容器的所有空间。
(2)设置组件大小的单位
~	px(pixels)像素:即屏幕上的发光点;
~dp(或dip	device 	independent	pixles)设备独立像素:一种支持多分辨率设备的抽象单位,和硬件相关;
~sp(scaled pixels)比例像素:设置字体大小;
(3).设置组件的对齐方式
	在布局文件中,由 “android:gravity” 属性控制组件的对齐方式,其属性值有上(top)、下(bottom)、左(letf)、右(right)、水平方向居中(center_horizontal)、垂直方向居中(center_vertical)等。
           

LinearLayout(线性布局)

属性值:
android:orientation="horizontal"(水平方向)
android:orientation="vertical"(垂直方向)
android:gravity="top"-------->控制组件对齐方式;上top,下bottom;左left;右right;水平方向居中(center_horizontal); 垂直方向居中(center_vertical)
           

核心代码

<LinearLayout android:orientation="vertical/horizontal">
//垂直或者水平排列
layout_margin//----->该组件距离四边的距离
layout_marginBottom//----->该组件底部下方应空出的距离
layout_marginEnd//----->在该组件的结束位置后空出的距离
layout_marginLeft/Right//------->该组件左边/右边应空出的距离
layout_marginStart//------->从该组件的起始位置空出的距离
layout_marginTop//------->该组件顶部上方应空出的距离


           

若希望布局中的控件或(子布局)的大小能按照一定比例分布,可使用设置权重

1.在布局中添加属性:
		android:weightSum="5"	设置该布局总权重值,如果weightSum不设置,默认为子控件权重之和。
2.为布局中的 各个控件(或子布局)添加属性:
		android:layout_weight="1.0"来设置该控件或子布局子在父容器中的权重值
3.将控件默认宽或高(根据布局方向)值设为0以免影响通过权重设置的控件大小。
		android:layout_width="0dp"或
		android:layout_height="0dp"
           

约束布局(ConstraintLayout)

  • 扁平式的布局方式,无任何嵌套,减少布局的层级,优化渲染性能
  • 要在ConstrainLayout中定义View的位置,必须为该View添加至少一个水平和垂直约束(否则该view会在左上角绘制)
  • 约束布局中的控件都有一个Constrains属性,处理拖拽方式,也可以通过该属性设置或调整与其他控件之间的约束关系,控件间的间距也可以通过Layout_Margin属性进行精确设置或调整。

相对布局(RelativeLayout)

  • 通过指定ID关联其他组件,与之右对齐、上下对齐或屏幕中央等方式来排列组件。

帧布局(FrameLayout)

  • 将组件放置到左上角位置,当添加多个组件时,后面的组件将遮盖之前的组件。在XML布局文件中,由根元素FrameLayout来标识帧布局。
  • 示例
    Android学习笔记(一)布局类

表格布局(TableLayout)

  • 将页面划分成行列构成的单元格。
  • 在XML布局文件中,由根元素TableLayout来标识表格布局
  • 表格的列数由android:shrinkColumns定义,例如:

    android:shrinkColumns="0,1,2,3"即表格为3列,其列编号为第123列

  • 表格的行为由 定义。组件放置到那一列,由android:layout_column指定列编号

    例:

    Android学习笔记(一)布局类

网格布局(GridLayout)

主要属性

属性名 作用
alignmentMode 设置布局管理器的对齐方式
columnCount 设置网格列数量
rowCount 设置网格行数量
layout_columnSpan 设置组件占据列数
layout_rowSpan 设置组件占据行数