Android 基础知识

Android 主页 Android 概述 Android 下载安装和开发环境配置 Android Studio IDE Android 架构 Android 应用程序组件 Android Hello World 示例 Android 资源 Android 活动 Android 服务 Android 广播接收器 Android 内容提供者 Android 片段 Android Intents/Filters

Android 用户界面

Android UI 布局 Android UI 控件 Android 事件处理 Android 样式和主题 Android 自定义组件

Android 高级概念

Android 拖放 Android 通知 Android 基于位置的服务 Android 发送电子邮件 Android 发送短信 Android 拨打电话 Android 发布应用程序

Android 实用示例

Android 警报对话框 Android 动画 Android 音频捕捉 Android 音频管理器 Android 自动完成 Android 最佳实践 Android 蓝牙 Android 相机 Android 剪贴板 Android 自定义字体 Android 数据备份 Android 开发者工具 Android 模拟器 Android Facebook 集成 Android 手势 Android 谷歌地图 Android 图像效果 Android 图像切换 Android 内部存储 Android JetPlayer Android JSON 解析器 Android Linkedin 集成 Android 旋转加载器 Android 本地化 Android 登录应用 Android 媒体播放器 Android 多点触控 Android 导航 Android 网络连接 Android NFC 指南 Android PHP/MySQL Android 进度圈 Android 进度条 Android 推送通知 Android 渲染脚本 Android RSS 阅读器 Android 屏幕投射 Android SDK 管理器 Android 传感器 Android 会话管理 Android 共享首选项 Android SIP 协议 Android 拼写检查器 Android SQLite 数据库 Android 支持库 Android 测试 Android 文字转语音 Android TextureView Android Twitter 集成 Android UI 设计 Android UI 模式 Android UI 测试 Android WebView 布局 Android Wi-Fi Android Widgets Android XML 解析器

Android 其他

Android 面试问题 Android 有用的资源 Android 测验


Android 相对布局

Android RelativeLayout 使您能够指定子视图相对于彼此的位置。 每个视图的位置可以指定为相对于兄弟元素或相对于父元素。

相对

相对布局


相对布局属性

以下是 RelativeLayout 特有的重要属性 −

序号 属性 & 描述
1

android:id

这是唯一标识布局的 ID。

2

android:gravity

这指定了对象应如何在 X 和 Y 轴上定位其内容。 可能的值是 top、bottom、left、right、center、center_vertical、center_horizontal 等。

3

android:ignoreGravity

这表明什么视图不应受重力影响。

使用RelativeLayout,您可以通过右边框对齐两个元素,或者使一个在另一个下方,在屏幕中居中,左居中,等等。默认情况下,所有子视图都绘制在布局的左上角,因此您必须使用 RelativeLayout.LayoutParams 中可用的各种布局属性定义每个视图的位置,下面给出了一些重要属性 −

序号 属性 & 描述
1

android:layout_above

将此视图的底部边缘定位在给定的锚视图 ID 上方,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"

2

android:layout_alignBottom

使该视图的底部边缘与给定锚视图 ID 的底部边缘匹配,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。

3

android:layout_alignLeft

使该视图的左边缘与给定锚视图 ID 的左边缘匹配,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。

4

android:layout_alignParentBottom

如果为 true,则使该视图的底部边缘与父视图的底部边缘匹配。 必须是布尔值,"true" 或 "false"。

5

android:layout_alignParentEnd

如果为 true,则使此视图的结束边缘与父视图的结束边缘匹配。 必须是布尔值,"true" 或 "false"。

6

android:layout_alignParentLeft

如果为 true,则使该视图的左边缘与父视图的左边缘匹配。必须是布尔值,"true" 或 "false"。

7

android:layout_alignParentRight

如果为 true,则使此视图的右边缘与父视图的右边缘匹配。必须是布尔值,"true" 或 "false"。

8

android:layout_alignParentStart

如果为 true,则使此视图的起始边缘与父视图的起始边缘匹配。必须是布尔值,"true" 或 "false"。

9

android:layout_alignParentTop

如果为 true,则使该视图的上边缘与父视图的上边缘匹配。必须是布尔值,"true" 或 "false"。

10

android:layout_alignRight

使该视图的右边缘与给定锚视图 ID 的右边缘匹配,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。

11

android:layout_alignStart

使该视图的起始边缘与给定锚视图 ID 的起始边缘匹配,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。

12

android:layout_alignTop

使该视图的上边缘与给定锚视图 ID 的上边缘匹配,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。

13

android:layout_below

将此视图的上边缘定位在给定的锚视图 ID 下方,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。

14

android:layout_centerHorizontal

如果为真,则将此子项水平居中于其父项中。 必须是布尔值,"true" 或 "false"。

15

android:layout_centerInParent

如果为真,则在其父级中水平和垂直居中此子级。必须是布尔值,"true" 或 "false"。

16

android:layout_centerVertical

如果为真,则将此子项垂直居中于其父项中。 必须是布尔值,"true" 或 "false"。

17

android:layout_toEndOf

将此视图的起始边缘定位到给定锚视图 ID 的末尾,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。

18

android:layout_toLeftOf

将此视图的右边缘定位到给定锚视图 ID 的左侧,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。

19

android:layout_toRightOf

将此视图的左边缘定位到给定锚视图 ID 的右侧,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。

20

android:layout_toStartOf

将此视图的结束边缘定位到给定锚视图 ID 的开头,并且必须是对另一个资源的引用,格式为 "@[+][package:]type:name"。


示例

本示例将通过简单的步骤向您展示如何使用相对布局创建您自己的 Android 应用程序。 按照以下步骤修改我们在 Hello World 示例章节中创建的 Android 应用程序 −

步骤 描述
1 您将使用 Android Studio IDE 创建一个 Android 应用程序,并将其命名为 demo,位于包 com.example.demo 下,如 Hello World 示例 一章中所述。
2 修改 res/layout/activity_main.xml 文件的默认内容以在相对布局中包含一些小部件。
3 在 res/values/strings.xml 文件中定义所需的常量
4 运行应用程序以启动 Android 模拟器并验证应用程序中所做更改的结果。

以下是修改后的主活动文件 src/com.example.demo/MainActivity.java 的内容。 该文件可以包含每个基本生命周期方法。

package com.example.demo;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }
   
}

以下是 res/layout/activity_main.xml 文件的内容 −

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:paddingLeft="16dp"
   android:paddingRight="16dp" >
   
   <EditText
      android:id="@+id/name"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:hint="@string/reminder" />
      
   <LinearLayout
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_alignParentStart="true"
      android:layout_below="@+id/name">
      
      <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="New Button"
         android:id="@+id/button" />
      
      <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="New Button"
         android:id="@+id/button2" />
      
   </LinearLayout>

</RelativeLayout>

以下将是 res/values/strings.xml 的内容来定义两个新常量 −

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="action_settings">Settings</string>
   <string name="reminder">Enter your name</string>
</resources>

让我们尝试运行我们刚刚修改的 Hello World! 应用程序。 I assume you had created your AVD while doing environment setup. 要从 Android Studio 运行应用程序,请打开项目的活动文件之一,然后单击工具栏中的 Run Eclipse 运行图标 图标。 Android Studio 在您的 AVD 上安装应用程序并启动它,如果您的设置和应用程序一切正常,它将显示以下 Emulator 窗口 −

Android 相对布局

❮ Android UI 布局