热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析Android线性布局的关键属性与应用技巧

本文详细探讨了Android线性布局中的关键属性及其应用技巧,包括`Gravity`、`Padding`和`Weight`等。具体介绍了`android:gravity`属性,用于控制控件内部内容的对齐方式,以及`android:layout_gravity`属性,用于确定控件在父布局中的位置。此外,还深入解析了`android:layout_weight`的使用方法,帮助开发者更灵活地管理布局空间分配。

内容概览

  • Gravity
  • Padding
  • Weight

gravity与layout_gravity

android:gravity:
用于设置该控件中内容相对于该控件的对齐方式
android:layout_gravity:
用于设置该控件相对于父控件的对齐方式


一个属性可以包含多个值,需用”|”分开。其含义如下:
这里写图片描述


这里写图片描述
这里写图片描述


padding与margin边距

android:padding:
用于设置该控件中内容相对于该控件的边距,即内边距。
android:layout_margin:
用于设置该控件相对于其他控件的边距,即外边距。
这里写图片描述


这里写图片描述
这里写图片描述


Weight

layout_weight的值用于在线性布局中指定父控件剩余空间的分配比例。
这里写图片描述


这里写图片描述
这里写图片描述
淡蓝色区域就是first和second控件的父控件的剩余空间。当我们分别在两个textView中添加android:layout_weight=”1”时候就变成了
这里写图片描述

也就是这个父控件剩余空间被1:1的平均分成两份,此时父控件就已经被这两个子控件填满了。
但问题是:first和second是按照1:1的比例把这个父控件平分了吗?
答案是否定的。first的宽度本身比second小,通过weight只是把父控件的剩余空间1:1平均分配,而first的宽度和second宽度并不相同。
被设置weight值的控件,宽度应为该控件的原宽度+父控件的剩余空间乘以比例
水平方向的线性布局中:使用weight时,需注意将宽度设置为0dp
垂直方向的线性布局中:使用weight时,需注意将高度设置为0dp


面试题中会经常考这样一个题:
如果把两个TextView中的宽度设置为match_parent,那么两个控件的比例是相反的。
这里写图片描述
计算公式如下:
first的宽度:match_parent(原宽度)+(match_parent(父控件宽度)-(match_parent+match_parent)(两个子控件宽度))*1/3
设match_parent为a
first的宽度:a+(a-2a)*1/3
=a-1/3a
=2/3a
first的宽度为父控件宽度的2/3
second的宽度:a+(a-2a)*2/3
=a-2/3a
=1/3a


推荐阅读
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文详细介绍了 com.facebook.drawee.view.SimpleDraweeView 中的 setScaleType 方法,提供了多个实际代码示例,并解释了其在不同场景下的应用。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 优化 Android 按钮状态下的背景和文本颜色变化
    本文介绍如何通过 Android 的 Selector 实现按钮在不同状态下(如按压)的背景和文本颜色动态变化。我们将详细讲解实现步骤,并提供完整的代码示例。 ... [详细]
  • 在 Android 开发中,通过 Intent 启动 Activity 或 Service 时,可以使用 putExtra 方法传递数据。接收方可以通过 getIntent().getExtras() 获取这些数据。本文将介绍如何使用 RoboGuice 框架简化这一过程,特别是 @InjectExtra 注解的使用。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 本文详细介绍了如何在Android 4.4及以上版本中配置WebView以实现内容的自动高度调整和屏幕适配,确保中文显示正常,并提供代码示例。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 本文详细探讨了Android Activity中View的绘制流程和动画机制,包括Activity的生命周期、View的测量、布局和绘制过程以及动画对View的影响。通过实验验证,澄清了一些常见的误解,并提供了代码示例和执行结果。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
author-avatar
手机用户2602906647
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有