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来标识帧布局。
- 示例
表格布局(TableLayout)
- 将页面划分成行列构成的单元格。
- 在XML布局文件中,由根元素TableLayout来标识表格布局
-
表格的列数由android:shrinkColumns定义,例如:
android:shrinkColumns="0,1,2,3"即表格为3列,其列编号为第123列
-
表格的行为由 定义。组件放置到那一列,由android:layout_column指定列编号
例:
网格布局(GridLayout)
主要属性
属性名 | 作用 |
---|---|
alignmentMode | 设置布局管理器的对齐方式 |
columnCount | 设置网格列数量 |
rowCount | 设置网格行数量 |
layout_columnSpan | 设置组件占据列数 |
layout_rowSpan | 设置组件占据行数 |