Android应用的界面编程(二)

第一组UI组件——以viewGroup为基类的布局管理器

Android的布局管理器本身就是一个UI组件,继承了View类,是ViewGroup的一个子类。

从图可以看出来,所有布局都可以作为容器类使用,因此可以调用多个重载的方法addView()向布局容器添加组件。

1.线性布局

线性布局即LinearLayout,能将容器的组件一个挨着一个排列起来,可以控制横向排列还是纵向排列。当然,线性布局不会换行,当组件一个挨着一个排列到头之后,剩下的组件不会被显示出来

1.1LinearLayout常用XML属性及方法

XML属性 相关方法 说明
android:baselineAligned setBaselineAligned(boolean) 该属性值为fasle,将会阻止该布局管理器与它的子元素的基线对齐
android:divider setDividerDrawable(Drawable) 设置垂直布局时两个按钮之间的分隔条
android:gravity setGravity(int) 设置布局管理器内组件的对其方式
android:orientation setOrientation(int) 设置布局管理器内组件的排列方式

备注:

android:gravity——该属性值支持top、left、right、center_vertical、fill_vertivla、center_horizontal、fill_horizontal、fill,clip_vertical、clip_horizontal几个属性值。也可以同时制定多种对齐方式的组合,例如:left|center_vertical代表出现在屏幕的左边而且垂直居中

android:orientation——属性可以设置为horizontal(水平排列)、vertical(垂直排列)

1.2LinearLayout子组件支持的XML属性及方法

XML属性 相关方法 说明
android:layout_gravity 设置该元素在LinearLayout中的对齐方式
android:layout_weight 设置该元素在LinearLayout中所占的权重

1.3线性布局实例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="按钮1"
    />

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="按钮2"
    />
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="按钮3"
    />
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="按钮4"
    />
</LinearLayout>

2.表格布局

表格布局继承了线性布局,所以本质上还是线性布局。TableLayout不需要明确的说出有多少行多少列,而是通过添加TableRow、其他组件来控制行数和列数。

每次向TableLayout添加一个TableRow,即添加一行,TableRow也是容器,可以在里面添加其他组件,每添加一个组件该表格就增加一列。如果直接在TableLayout中添加组件,这个组件就直接占一行。

2.1TableLayout常用的XML属性及相关方法

XML属性 相关方法 说明
android:collapsColumns setColumnCollapsd(int,boolean) 设置需要被隐藏的列的序号,多个序号之间用逗号隔开
android:shrinkColumns setColumnCollapsd(int,boolean) 设置需要被收缩的列的序号,多个序号之间用逗号隔开
android:stretchColumns setColumnCollapsd(int,boolean) 设置需要被拉伸的列的序号,多个序号之间用逗号隔开

2.2表格布局实例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!--定义表格文件,指定第二例允许收缩,,第三列循序拉伸-->
    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:shrinkColumns="1"
        android:stretchColumns="2">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="占一行的按钮"/>

        <TableRow>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="普通按钮"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="收缩的按钮"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="拉伸的按钮"/>
        </TableRow>
    </TableLayout>
    <!--定义第二个表格文件,制定第二列隐藏-->
    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:collapseColumns="1">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="占一行的按钮"/>
        <TableRow>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="普通的按钮1"/> <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="隐藏的按钮2"/> <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="普通的按钮3"/>
        </TableRow>

    </TableLayout>
    <!--定义第三个表格文件,指定第二列和第三列可以被拉伸-->
    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="1,2">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="占一行的按钮"/>
        <TableRow>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="普通的按钮"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="拉伸的按钮"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="拉伸的按钮"/>
        </TableRow>
        <TableRow>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="普通的按钮"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="拉伸的按钮"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

3.相对布局

相对布局(RelativeLayout)中,所有组件的位置总是相对兄弟组件、容器来决定。

3.1RelativeLayout常用XML属性及方法

XML属性 相关方法 说明
android:gravity setGravity(int) 设置布局容器内子组件的对其方式
android:ignoreGravity setIgnoreGravity(int) 设置哪个组件不受gravity属性的影响

3.2RelativeLayout子组件支持的XML属性及方法

XML属性 说明
android:layout_centerHorizontal 控制该子组件是否位于布局容器的水平居中
android:layout_centerVertical 控制该子组件是否位于布局容器的垂直居中
android:layout_centerInParent 控制该子组件是否位于布局容器的中央位置
android:layout_alignParentBottom 控制该子组件是否与布局容器的底端对齐
android:layout_alignParentLeft 控制该子组件是否与布局容器的左端对齐
android:layout_alignParentRight 控制该子组件是否与布局容器的右端对齐
android:layout_alignParentTop 控制该子组件是否与布局容器的顶端对齐
android:layout_toRightOf 控制该子组件位于给出ID组件的右侧
android:layout_toLeftOf 控制该子组件位于给出ID组件的左侧
android:layout_above 控制该子组件位于给出ID组件的上方
android:layout_below 控制该子组件位于给出ID组件的下方
android:layout_alignTop 控制该子组件位于给出ID组件的上边界对齐
android:layout_alignBottom 控制该子组件位于给出ID组件的下边界对齐
android:layout_alignLeft 控制该子组件位于给出ID组件的左边界对齐
android:layout_alignRight 控制该子组件位于给出ID组件的右边界对齐

3.3相对布局实例

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<TextView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:id="@+id/view01"
    android:background="@drawable/feiji"
    android:layout_centerInParent="true"/>
    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/view02"
        android:background="@drawable/feiji"
        android:layout_above="@id/view01"
        android:layout_alignLeft="@id/view01"/>
    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/view03"
        android:background="@drawable/feiji"
        android:layout_below="@id/view01"
        android:layout_alignLeft="@id/view01"/>
    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/view04"
        android:background="@drawable/feiji"
        android:layout_toLeftOf="@id/view01"
        android:layout_alignBottom="@id/view01"/>
    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/view05"
        android:background="@drawable/feiji"
        android:layout_toRightOf="@id/view01"
        android:layout_alignTop="@id/view01"/>
</RelativeLayout>

4.帧布局

帧布局(FrameLayout)中,为每个加入其中的组件创建一个空白的区域(称为一帧),每个子组件占一帧,这些帧会根据gravity属性自动对齐。帧布局中,每个组件是一个个的叠加在一起的。

4.1FrameLayout常用的属性及方法

XML属性 相关方法 说明
android:foreground setForeGround(Drawable) 设置该帧布局的前景图
android:foregroundGravity setForeGroundGravity(int) 设置前景图的gravity属性

4.2帧布局实例

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<TextView
    android:id="@+id/view1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:width="320dp"
    android:height="320dp"
    android:background="#f00"
    />
    <TextView
        android:id="@+id/view2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:width="280dp"
        android:height="280dp"
        android:background="#0f0"
        />
    <TextView
        android:id="@+id/view3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:width="240dp"
        android:height="240dp"
        android:background="#00f"
        />
    <TextView
        android:id="@+id/view4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:width="200dp"
        android:height="200dp"
        android:background="#ff0"
        />
    <TextView
        android:id="@+id/view5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:width="160dp"
        android:height="160dp"
        android:background="#f0f"
        />
    <TextView
        android:id="@+id/view6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:width="120dp"
        android:height="120dp"
        android:background="#0ff"
        />
</FrameLayout>

5.网格布局

网格布局(GridLayout)是Android4.0后新增的布局管理器,类似于HTML里面的table标签,他可以把整个布局划分n*m的网格。也可以设置一个组件横跨多少行多少列。

5.1FrameLayout常用的属性及方法

XML属性 相关方法 说明
android:alignmentMode setAlignmentMode(int) 设置该布局管理器采用的对齐模式
android:columnCount setColumnCount(int) 设置该网格的列数
android:columnOderPreserved setColumnOderPreserved(boolean) 设置该网格容器是否保留列序号
android:rowCount setRowCount(int) 设置该网格的行数
android:rowOderPreserved setRowOderPreserved(boolean) 设置该网格容器是否保留行序号
android:useDefaultMargins setUseDefaultMargins(boolean) 设置该网格布局是否使用默认的页边距

5.2GridLayout子组件支持的XML属性及方法

XML属性 相关方法 说明
android:layout_column 设置该子组件在GridLayout的第几列
android:layout_columnSpan 设置该子组件在GridLayout横向跨几列
android:layout_gravity setGravity(int) 设置该子组件以什么方式占据网格空间
android:layout_row 设置该子组件在GridLayout的第几行
android:layout_rowSpan 设置该子组件在GridLayout纵向跨几行

5.3网格布局实例


6.绝对布局

绝对布局(AbsoluteLayout)在大多数不赞成使用,因为支持Android应用的手机千差万别,屏幕大小分辨率都不一样,使用绝对布局很难控制组件的位置。这里只做一个简单的介绍

layout_x:指定该组件的X坐标

layout_y:指定该组件的Y坐标

时间: 2024-10-08 19:22:00

Android应用的界面编程(二)的相关文章

二、Android应用的界面编程(七)ViewAnimator及其子类[ ViewSwitcher、ImageSwitcher、TextSwitcher、ViewFlipper ]

ViewAnimator是一个基类,它继承了FrameLayout.因此它表现出FrameLayout的特征,可以将多个View组“叠”在一起. ViewAnimator可以在View切换时表现出动画效果. ViewAnimator及其子类也是一组非常重要的UI组件,这种组件的主要功能是增加动画效果.从而使界面更加“炫”. [ViewAnimator及其子类的继承关系] 图2.56 [ViewAnimator支持的常见XML属性]android:animateFirstView 设置ViewAn

二、Android应用的界面编程(一)界面编程与视图(View)组件

Android应用的绝大部分UI组件都放在android.widget包及其子包.android.view包及其子包中,Android应用的所有UI组件都继承了View类.它代表一个空白的矩形区域.View类还有一个重要的子类:ViewGroup,但ViewGroup通常作为其他组件的容器使用.Android的所有UI都是建立在View.ViewGroup基础之上的,因此ViewGroup也可以被当成View使用.ViewGroup里除了可以包含普通View组件之外,还可以再次包含ViewGro

二、Android应用的界面编程(六)ProgressBar及其子类[SeekBar、RatingBar]er

通常用于向用户显示某个耗时操作完成的百分比.Android支持几种风格的进度条,通过style属性可以为ProgressBar指定风格.该属性支持如下几个属性值. # @android:style/Widget.ProgressBar.Horizontal; 水平进度条. # @android:style/Widget.ProgressBar.Inverse; 普通大小的环形进度条. # @android:style/Widget.ProgressBar.Large; 大环形进度条. # @an

Android开发自学笔记(Android Studio)&mdash;4.界面编程与View组件简单介绍

一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组件,开发者只需要拖拖拽拽就能完成简单的应用,这些只是界面的展示,如果要完成优秀的用户交互,事件响应机制当然也是重点,这是后话. Android SDK中绝大部分UI组件都在androd.widget及其子包.android.view及其子包下,Android应用中的所有UI组件都继承了View类,V

Android中的多线程编程(二)Handler的原理(附源码)

Android中Handler的原理 一.Handler的原理: 1.Handler.Looper.MessageQueue之间的关系. (1).Handler类:向MessageQueue消息队列中发送消息,接收Looper返回来的消息并处理. (2).Looper类: 存储消息队列的容器.负责接收Handler发送的消息,并直接把消息回传给Handler自己. (3).MessageQueue类:存储消息. 2.关系: (1).创建Handler对象的时候,它就会绑定到默认的线程(UI线程)

Android学习笔记(一)——Android应用的界面编程

Android提供了大量丰富的UI组件,所有的UI组件都继承自View类,View组件非常类似于Swing编程的JPanel,它代表一个空白的矩形区域. Android采用"组合器"设计模式来设计View和ViewGroup:ViewGroup是View的子类,因此ViewGroup也可以当成View使用. Android推荐使用XML布局文件来定义用户界面,而不是使用Java代码来开发用户界面.使用XML布局文件来控制视图,不仅简单.明了,而且可以将应用中的逻辑视图从Java代码中分

[转]android学习----基础UI编程(二)

7. TextView 和 EditView 共舞 预达到效果:在EditText中输入同时TextView进行输出 //前提:在main.xml中添加EditText 和 TextView控件 核心代码示例: public class EX_Ctrl_1 extends Activity {    private TextView mTextView01;    private EditText mEditText01;    // Called when the activity is fi

Android应用开发-网络编程(二)(重制版)

Apache HttpClient框架 GET方式请求提交数据 1. 创建一个HttpClient HttpClient hc = new DefaultHttpClient(); 2. 创建一个HttpGet,要提交给服务器的数据已经拼接在path中 HttpGet hg = new HttpGet(path); 3. 使用HttpClient对象发送GET请求,建立连接,返回响应头对象 HttpResponse hr = hc.execute(hg); 4. 拿到响应头中的状态行,获取状态码

java之 22天 GUI 图形界面编程(二)

转自:http://takeme.iteye.com/blog/1876853 模拟window开打文件 Java代码 1 import java.awt.Button; 2 import java.awt.Dialog; 3 import java.awt.FlowLayout; 4 import java.awt.Frame; 5 import java.awt.Label; 6 import java.awt.TextArea; 7 import java.awt.TextField; 8