首页 > 其他分享 >第2天:熟悉Android Studio补充材料——`activity_main.xml`解读

第2天:熟悉Android Studio补充材料——`activity_main.xml`解读

时间:2024-09-29 12:48:17浏览次数:12  
标签:xml layout 布局 ConstraintLayout Studio activity android 文本 TextView

下面是对“第2天:熟悉Android Studio”该文学习的更深层次的补充材料,对 activity_main.xml 文件的理解。
下面对activity_main.xml 文件中每一行进行详细解释:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:textSize="24sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

逐行解释

1. XML 声明

<?xml version="1.0" encoding="utf-8"?>
  • 解释
    • XML版本:声明使用的是XML 1.0规范。
    • 编码方式:指定文档的字符编码为UTF-8,这是一种常用的字符编码方式,支持多种语言字符。

2. 根布局元素:ConstraintLayout

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  • 解释
    • <androidx.constraintlayout.widget.ConstraintLayout>
      • 定义ConstraintLayout 是一种强大的布局管理器,允许在布局中创建复杂的视图层级,同时保持高性能。
      • 命名空间声明
        • xmlns:android="http://schemas.android.com/apk/res/android":定义了android命名空间,用于引用Android的属性和资源。
        • xmlns:app="http://schemas.android.com/apk/res-auto":定义了app命名空间,用于引用自定义属性或第三方库的属性(如ConstraintLayout的约束属性)。
        • xmlns:tools="http://schemas.android.com/tools":定义了tools命名空间,用于在开发过程中提供工具相关的属性,这些属性不会在应用运行时生效。
    • 属性解释
      • android:id="@+id/main"
        • 作用:为这个ConstraintLayout分配一个唯一的ID,称为main。通过这个ID,您可以在代码中引用该布局。
        • 语法@+id/ 表示创建一个新的ID,后面跟随的是ID的名称。
      • android:layout_width="match_parent"
        • 作用:设置布局的宽度为匹配父容器的宽度。
        • 值解释
          • match_parent:使布局宽度与父容器的宽度相同。
      • android:layout_height="match_parent"
        • 作用:设置布局的高度为匹配父容器的高度。
        • 值解释
          • match_parent:使布局高度与父容器的高度相同。
      • tools:context=".MainActivity"
        • 作用:指定此布局文件关联的活动(Activity)。这对于Android Studio的预览功能非常有用,可以在布局编辑器中预览与指定活动相关的样式和主题。
        • 值解释
          • .MainActivity:表示位于同一包中的MainActivity类。

3. 子视图元素:TextView

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:textSize="24sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
  • 解释

    • <TextView>
      • 定义TextView 是用于显示文本内容的基本视图组件。
    • 属性解释
      • android:layout_width="wrap_content"
        • 作用:设置TextView的宽度为包裹内容,即宽度刚好包裹文本内容。
        • 值解释
          • wrap_content:根据内容的大小自动调整宽度。
      • android:layout_height="wrap_content"
        • 作用:设置TextView的高度为包裹内容,即高度刚好包裹文本内容。
        • 值解释
          • wrap_content:根据内容的大小自动调整高度。
      • android:text="Hello World!"
        • 作用:设置TextView显示的文本内容为“Hello World!”。
      • android:textSize="24sp"
        • 作用:设置文本的字体大小为24sp。
        • 值解释
          • sp(Scale-independent Pixels):独立于用户字体大小偏好的尺寸单位,适用于字体大小。
      • 约束属性
        • 这些属性用于将TextView定位在ConstraintLayout中的特定位置。
        • app:layout_constraintTop_toTopOf="parent"
          • 作用:将TextView的顶部约束到父布局(ConstraintLayout)的顶部。
        • app:layout_constraintBottom_toBottomOf="parent"
          • 作用:将TextView的底部约束到父布局的底部。
        • app:layout_constraintStart_toStartOf="parent"
          • 作用:将TextView的起始(左侧)约束到父布局的起始。
          • 注意StartEnd 替代了 LeftRight,以更好地支持从右到左(RTL)语言布局。
        • app:layout_constraintEnd_toEndOf="parent"
          • 作用:将TextView的结束(右侧)约束到父布局的结束。
  • 整体定位效果

    • 通过同时设置上下左右四个方向的约束,TextView被完全居中在父布局中。这意味着:
      • TextView的顶部与父布局的顶部对齐。
      • TextView的底部与父布局的底部对齐。
      • TextView的起始与父布局的起始对齐。
      • TextView的结束与父布局的结束对齐。
    • 这种设置确保TextView在父布局中水平和垂直方向都居中显示。

4. 关闭根布局标签

</androidx.constraintlayout.widget.ConstraintLayout>
  • 解释
    • 结束了ConstraintLayout的定义,标志着布局文件的结束。

完整布局文件概述

整个布局文件使用了ConstraintLayout作为根布局,确保了TextView在屏幕中央居中显示,并设置了文本内容和样式。以下是对整个布局的总结:

  • 根布局ConstraintLayout,一个强大的布局管理器,允许创建复杂且灵活的布局。
  • 子视图:一个TextView,显示“Hello World!”文本,字体大小为24sp,颜色默认为黑色(除非在主题或其他属性中另行设置)。
  • 布局约束:通过四个方向的约束,将TextView完全居中在屏幕上。

进一步优化

1. 设置文本颜色为紫色

如果您希望“Hello World!”文本显示为紫色,可以在TextView中添加android:textColor属性。例如:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:textSize="24sp"
    android:textColor="@color/purple_500"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
  • 步骤
    1. 定义颜色资源
      • 打开res/values/colors.xml文件,添加紫色的颜色定义:
        ‘’’

        #6200EE
        #3700B3
        #03DAC5

        ‘’’
    2. 应用颜色
      • TextView中使用android:textColor="@color/purple_500",将文本颜色设置为紫色。截图如下:

2. 使用Center约束简化布局

虽然设置四个方向的约束可以完全居中TextView,但是ConstraintLayout提供了一种更简洁的方式来实现居中。您可以仅使用水平和垂直中心约束:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:textSize="24sp"
    android:textColor="@color/purple_500"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent" />

或者,使用layout_constraintStart_toStartOflayout_constraintEnd_toEndOflayout_constraintTop_toTopOflayout_constraintBottom_toBottomOf,这已经是最简化的约束方式。


总结

您提供的 activity_main.xml 文件定义了一个简单的布局,使用ConstraintLayout将一个TextView居中显示在屏幕上,显示文本“Hello World!”并设置了字体大小。为了实现文本颜色为紫色,您可以在TextView中添加android:textColor属性,并在colors.xml中定义相应的颜色资源。

主要步骤概述

  1. 定义根布局:使用ConstraintLayout,设置宽高为match_parent以填满整个屏幕。
  2. 添加子视图:添加一个TextView,设置文本内容和字体大小。
  3. 设置布局约束:通过四个方向的约束将TextView完全居中。
  4. 设置文本颜色(可选):在TextView中添加android:textColor属性,并在colors.xml中定义紫色。

通过这些步骤,您可以创建一个简洁且功能明确的布局,确保“Hello World!”文本在屏幕中央以紫色显示。


常见问题解答

问题1:如何在ConstraintLayout中居中多个视图?

解答

  • 对于多个视图,您可以为每个视图设置相应的约束,使它们彼此相对定位或相对于父布局居中。例如,可以使用链(Chains)来对齐多个视图。

问题2:如何调整TextView的字体颜色和样式?

解答

  • 字体颜色:使用android:textColor属性,引用颜色资源或直接使用颜色值。
    ‘’’
    android:textColor=“@color/purple_500”
    ‘’’
  • 字体样式:使用android:textStyle属性,设置为bolditalicnormal
    ‘’’
    android:textStyle=“bold”
    ‘’’
  • 字体类型:使用android:fontFamily属性,设置特定的字体系列。

问题3:如何在Android Studio中预览XML布局?

解答

  • 打开activity_main.xml文件,在编辑器窗口的右上角找到预览按钮(通常显示为一个眼睛图标),点击即可在右侧预览布局效果。
  • 您还可以切换不同的预览模式,如DesignSplitText视图。

资源推荐

标签:xml,layout,布局,ConstraintLayout,Studio,activity,android,文本,TextView
From: https://blog.csdn.net/weixin_41644568/article/details/142548678

相关文章

  • 第2天:熟悉Android Studio
    欢迎来到第2天的Android编程教程!今天,我们将深入了解AndroidStudio的界面,学习如何创建你的第一个“KotlinHelloWorld”项目,了解项目结构,并在模拟器或真机上运行你的应用程序。本教程代码下载地址HelloWorldApp学习目标通过今天的学习,你将能够:熟悉AndroidStudio的主......
  • 猜拳数据集-石头-剪刀-布数据集-YOLOv9 - YOLOv8 - YOLOv5 - YOLOv7 - COCO JSON - YO
    “石头-剪刀-布”计算机视觉项目是一个利用摄像头捕捉手势并识别出手势是石头、剪刀还是布的项目。这类项目通常用于学习和展示计算机视觉技术,如图像处理、特征提取以及机器学习或深度学习模型的应用。数据介绍rock-paper-scissorsComputerVisionProject数据集信息......
  • IDea中使用MyBatis 实现原生功能和xml分页功能
    在开始之前,我们假定您已经:熟悉Java环境配置及其开发熟悉关系型数据库,比如MySQL熟悉SpringBoot及相关框架熟悉Java构建工具,比如Maven        今天我们要了解和学习的是MyBatis原生功能,在MyBatis中提供了 @Insert 、@Delete 、@Update 、@Select 4......
  • 三篇文章速通JavaSE到SpringBoot框架 (中) IO 进程线程 网络编程 XML MySQL JDBC相关
    文章目录IOfile类的作用I/O的作用将上篇文章综合项目使用IO流升级所需知识点进程线程创建线程的三种方式网络编程网络编程介绍IP地址端口号网络通信协议网络通信协议的分层演示代码XMLXML的作用是什么?xml特点注解什么是注解?注解的使用注解的重要性注解的使用实例M......
  • Event和Activity
    在JAINSLEE中,Event(事件)和Activity(活动)是两个核心概念,它们共同作用于系统的执行过程,但它们代表不同的含义和职责。让我们从最基础的层面来讲解它们的区别、联系,以及它们在JAINSLEE框架中的角色。1.Event(事件)1.1概念事件(Event)是JAINSLEE中的一个基本单元,用来......
  • 整合了mybatis-plus后,就不用再xml文件里面写sql了吗
    整合了mybatis-plus后,就不用再xml文件里面写sql了吗使用mybatis-plus接口这是一个根据特定条件筛选学生信息的接口,用户可以通过姓名,年龄,性别,爱好来筛选学生,可以都选也可以都不选。这就迫使在java代码中添加了很多if语句publicList<SysStudent>queryList(SysStudent......
  • PbootCMS生成的sitemap.xml中增加tag标签链接
    要在PBootCMS中实现在sitemap.xml中包含标签(tag)链接,可以通过修改相关模型和控制器来实现。以下是详细的步骤和代码示例:步骤修改SitemapModel类在 SitemapModel.php 中增加获取指定分类标签的方法。修改SitemapController类在 SitemapController.php 中增加处理......
  • 流行的 Visual Studio Code 扩展
    流行的VisualStudioCode扩展2024Prettier:代码格式化程序:自动格式化代码以确保风格一致。实时服务器:启动具有静态和动态内容实时重新加载功能的本地开发服务器。Docker:可以轻松管理Docker容器和镜像、构建和部署Docker应用程序。括号对着色器2:匹配括号的颜色以提高复杂......
  • DataSphere Studio & Linkis 单机部署
    一、环境要求参考文档:DataSphereStudio&Linkis单机一键部署文档相关软件包:百度网盘1.系统要求CentOS为6或者72.安装依赖命令命令依赖:telnet;tar;sed;dos2unix;mysql;yum;java;unzip;zip;expectyumprovides*/telnet#如果命令不存在通过此命令查看命令所属安装包......
  • DataSphere Studio AppConn 部署
    一、Exchangis AppConn 部署参考文档:https://github.com/WeBankFinTech/Exchangis/blob/master/docs/zh_CN/ch1/exchangis_appconn_deploy_cn.mdhttps://github.com/WeBankFinTech/Exchangis/blob/dev-1.0.0/docs/zh_CN/ch1/exchangis_deploy_cn.md1.安装zookeeper(单机版)tarx......