首页 > 其他分享 >Android开发 - 视图布局属性解析

Android开发 - 视图布局属性解析

时间:2024-07-17 21:19:47浏览次数:16  
标签:控件 layout 视图 id ImageView Android 解析 android 图片

  • LinearLayout:主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件

  • RelativeLayout:称作相对布局,非常常用的一种布局。和LinearLayout的排列规则不同,RelativeLayout显得更加随意一些,它可以通过相对定位的方式让控件出现在布局的任何位置,是一种根据父容器和兄弟控件作为参照来确定控件位置的布局方式。相对布局不是绝对定位,而是相对于其父容器或其他控件进行定位,提供了灵活性,允许开发者创建复杂的界面结构

  • android:layout_width、android:layout_height:用于指定视图组件的宽度与高度,这两个属性可以接受以下3种类型的值:

    1. 具体数值:如50dp100px等,这种方式将直接设置视图组件的具体大小
    2. match_parent:视图组件的大小将与其父容器的大小相同。在LinearLayout中,match_parent将占据所有可用空间;在RelativeLayout中,match_parent将占据相对于其他视图组件的位置
    3. wrap_content:视图组件的大小将根据其内容动态调整。例如,一个TextView的大小将根据文本的多少自动调整
  • android:layout_weight:该属性用于在水平或垂直方向上分配额外的空间。当多个视图组件共享相同的空间时,layout_weight将决定它们如何分配这些空间。例如,在一个水平LinearLayout中,如果两个按钮的layout_width都设置为0dp(表示不占用固定空间),然后分别设置它们的layout_weight为1和2,那么第二个按钮将占据的空间将是第一个按钮的两倍

  • android:layout_marginTop:指定该属性所在控件距上部最近控件的最小值

  • android:layout_marginBottom:指定该属性所在控件距下部最近控件的最小值

  • android:layout_marginLeft:指定该属性所在控件距左边最近控件的最小值

  • android:layout_marginRight:指定该属性所在控件距右边最近控件的最小值

  • xmlns:声明命名空间的保留字,其实就是XML中元素的一个属性

  • xmlns:android:命名空间 android 用于 Android 系统定义的一些属性

  • android:id:ID是Android中布局文件中的控件引用的一个“标签”,它是在.xml文件中人为手动创建,如果想要引用布局文件中的控件,必须得为其设置ID属性,设置ID属性的方式有id=”@+id/xx”和id=”@id/xx

    • @+id/xx:在.xml布局文件中,是为该控件生成一个ID,其名"xx",在后面引用该控件时以“R.id.xx”的形式引用。意思是R文件中生成int xx=value,有两种情况:

      1. R文件中不存在xx变量,则生成int xx=value即为控件新建一个id值
      2. 若R文件中已存在xx变量,则不再新建,直接引用该变量对应的id值
      • 例如Button组件中,android:id="@+id/Next_button",是为该Button设置一个名为Next_button的ID;但在R.java中我们可以看到,android studio 底层已经为我们建立好了 Next_button的 地址,只需按一定的格式(R.id.xx)引用即可: mNextButton = (Button) findViewById(R.id.next_button)
    • @id/xx:在.xml布局文件中,提取已存在的值为该控件设置ID,如果不存在就会报错。为了重用id,可以在res/values目录下创建一个ids.xml文件, 在其中定义可以重用的id,然后在其他布局文件中使用@id引用(这样可以减少R.java文件中生成的ID数量)

  • android:orientation:在线性布局中,控件排列有水平和垂直两个方向,控件排列方向由 android:orientation 属性来控制,该属性需要加在 LinearLayout 标记的属性中从而设置该控件内的控件布局排列朝向:

    • android:orientation = "horizontal":指定布局内控件排列方式为 水平排列
    • android:orientation = "vertical":指定布局内控件排列方式为 垂直排列
  • gravity:在android视图布局中,我们经常会用到“重心”gravity这个属性。但是gravity有两种不同的类型:

    1. android:gravity:控件自身内容对自己的限定,一般赋值为 android:gravity = "center" 让控件自身内的内容(text文本、button按钮等)居中排列

    2. android:layout_gravity:与gravity属性不同的是,layout_gravity属性是用来设置该View相对与父View的位置,以下提供两种赋值使用类型:

      1. android:layout_gravity="center_horizontal":以父Vieworientation = "vertical"垂直为准,水平居中于父View
      2. android:layout_gravity="center_vertical":以父Vieworientation = "horizontal"水平为准,垂直居中于父View
      • 注意事项:子控件如果选择横或纵居中,这种属性声明是不能和父布局的排列方式相冲的,案例如下:
        1. android:layout_gravity="center_horizontal":以父Vieworientation = "horizontal"垂直为准,相冲位置不变
        2. android:layout_gravity="center_vertical":以父Vieworientation = "vertical"垂直为准,相冲位置不变
  • scaleType:scaleType的设置方式有以下两种:

    1. android:scaleType="xxx":在layout的xml中定义android:scaleType="xxx",取值范围为matrix、fitXY、fitStart、fitCenter、fitEnd、center、centerCrop、centerInside,默认取值为fit_center。可以参考一下例子:
      • android:scaleType="center"
        • 当图片大于ImageView的宽高:以图片的中心点和ImageView的中心点为基准,按照图片的原大小居中显示,不缩放,用ImageView的大小截取图片的居中部分
        • 当图片小于ImageView的宽高:直接居中显示该图片
      • android:scaleType="centerCrop"
        • 当图片大于ImageView的宽高:以图片的中心点和ImageView的中心点为基准,按比例缩小图片,直到图片的宽高有一边等于ImageView的宽高,则对于另一边,图片的长度大于或等于ImageView的长度,最后用ImageView的大小居中截取该图片
        • 当图片小于ImageView的宽高:以图片的中心店和ImageView的中心点为基准,按比例扩大图片,直到图片的宽高大于或等于ImageView的宽高,并按ImageView的大小居中截取该图片
      • android:scaleType="centerInside"
        • 当图片大于ImageView的宽高:以图片的中心和ImageView的中心点为基准,按比例缩小图片,使图片宽高等于或者小于ImagevView的宽高,直到将图片的内容完整居中显示
        • 当图片小于ImageView的宽高:直接居中显示该图片
      • android:scaleType="fitCenter":把图片按比例扩大(缩小)到ImageView的宽或高其中一个,居中显示
      • android:scaleType="fitStart":把图片按比例扩大(缩小)到ImageView的宽或高其中一个,在ImageView的上方显示
      • android:scaleType="fitEnd":把图片按比例扩大(缩小)到ImageView的宽或高,在ImageView的下方显示
      • android:scaleType="fitXY":把图片按指定的大小在ImageView中显示,拉伸或收缩图片,不保持原比例,填满ImageView
      • android:scaleType="matrix":运用图片进行绘制时的矩阵进行缩放,该矩阵可以通过imageView.setImageMatrix(matrix)进行设置。默认情况下展现形式为:不进行任何缩放,从ImageView的左上角开始摆放,原图超过ImageView的部分作裁剪处理
    2. imageView.setScaleType(ImageView.ScaleType.XXX):在java代码中调用imageView.setScaleType(ImageView.ScaleType.XXX),取值范围为ImageView.ScaleType.MATRIX、ImageView.ScaleType.FIT_XY、ImageView.ScaleType.FIT_START、ImageView.ScaleType.FIT_CENTER、ImageView.ScaleType.FIT_END、ImageView.ScaleType.CENTER、ImageView.ScaleType.CENTER_CROP、ImageView.ScaleType.CENTER_INSIDE,默认取值为ImageView.ScaleType.FIT_CENTER
  • android:background:设置控件背景颜色,赋值为十六进制颜色代码,例如:#FFFFFF即为白色

  • android:text:标题文本

  • android:textAllCaps:文本是否为大写,取值范围为true、false

  • android:textColor:文本颜色,赋值为十六进制颜色代码,例如:#FFFFFF即为白色

  • android:textSize:文本大小

标签:控件,layout,视图,id,ImageView,Android,解析,android,图片
From: https://www.cnblogs.com/ajunjava/p/18308303

相关文章

  • Protobuf传输协议解析与应用
    个人名片......
  • android开发基于Android10分析请求Zygote执行Fork一个新的应用程序的过程
    android开发基于Android10分析请求Zygote执行Fork一个新的应用程序的过程```ActivityTaskManagerService.activityPausedActivityStack.activityPausedLockedRootActivityContainer.resumeFocusedStacksTopActivitiesActivityStackSupervisor.startSpecificActivityLocked......
  • 【AI原理解析】—生成对抗网络(GAN)原理
    目录一、基本原理二、核心算法原理和数学模型三、训练过程四、GAN的优缺点生成对抗网络(GenerativeAdversarialNetwork,简称GAN)是一种深度学习模型,自2014年由IanGoodfellow等人提出以来,在人工智能领域得到了广泛应用。GAN的基本原理是通过两个神经网络——生成器(Genera......
  • Go 语言 UUID 库 google/uuid 源码解析:UUID version7 的实现
    google/uuid库地址建议阅读内容在阅读此篇文章之前,建议先了解UUIDv1的构成、UUIDv4的API以及掌握位运算。了解UUIDv1的构成可以参考Go语言UUID库google/uuid源码解析:UUIDversion1的实现或RFC9562。了解UUIDv4的API可以看Go语言UUID库google......
  • 5、nginx-主配置文件解析
    路径:vim/etc/nginx/nginx.conf · CoreModule-核心模块(进程数等):全局/核心块:配置影响nginx全局的指令、一般运行nginx服务器的用户组、nginx进程pid存放的路径、日志存放的路径、配置文件引入、允许生成workerprocess数等CoreModule-核心模块(进程数等)12usern......
  • 使用C#/.NET解析Wiki百科数据实现获取历史上的今天
    创建一个webapi项目做测试使用。 创建新控制器,搭建一个基础框架,包括获取当天日期、wiki的请求地址等创建一个Http请求帮助类以及方法,用于获取指定URL的信息 使用http请求访问指定url,先运行一下,看看返回的内容。内容如图右边所示,实际上是一个Json数据。我们主要解析大事......
  • 针尖对麦芒!Anthropic 推出 Claude Android 可实时翻译!
    Anthropic,作为OpenAI的强劲对手,于本周二正式推出了专为Android用户设计的Claude应用程序,旨在通过拓宽Claude的接入平台,吸引用户从ChatGPT转向其服务。这款Android应用承袭了五月问世的iOS版本的设计理念,用户无需支付任何费用即可体验到Anthropic顶尖AI模型——Claude3.5Sonnet的......
  • 《QQ三国》bugreportnew.dll 加载失败:游戏启动难题的深度解析与修复
    遇到《QQ三国》游戏加载bugreportnew.dll失败的问题,通常意味着游戏在启动或运行时未能成功加载或初始化bugreportnew.dll这个动态链接库(DynamicLinkLibrary)文件。bugreportnew.dll文件可能是游戏内置错误报告系统的一部分,用于在游戏崩溃或遇到问题时收集错误信息并生成报告。......
  • pyasn1及pyasn1-modules解析DER格式证书、私钥及公钥
    PEM转DERDER格式是证书、私钥、公钥等按ASN.1编码后序列化生成的二进制格式。我们可以从PEM格式中得到DER格式:例如:importbase64#PEM转DER格式defpem2der(pem:bytes)->bytes:returnbase64.b64decode(b''.join(pem.strip().split(b'\n')[1:-1]))#使用方法pem......
  • leetcode145. 二叉树的后序遍历,递归法+迭代法,全过程图解+步步解析,一点点教会你迭代法
    leetcode145.二叉树的后序遍历,递归法+迭代法给你一棵二叉树的根节点root,返回其节点值的后序遍历。示例1:输入:root=[1,null,2,3]输出:[3,2,1]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]递归法还是一如既往的简单。postorder函数是递归函数,用......