浅析Margin和Padding属性

Android国际化,阿语RTL适配总结 Android国际化,多语切换。重点介绍阿语下RTL的适配。 阅读详情

序

Magin:有边缘的意思,在Android布局中的使用方式是

android:layout_margin=“XXdp”,看到这个不免想到layout是父布局来控制子控件的。

而这个margin属性就是父控件来控制子控件的边缘位数状况的,俗称“外边距”。



Padding:是填充的意思,在Android布局中的使用方式是

android:padding=“XXdp”,这个就是子控件来控制自己的属性,拿TextView举例

这个是文字内容和控件边缘的距离,俗称“内边距”。


上图中除了红色框以内的区域,其他都是Padding填充的区域:

android:padding="16dp"

android:layout_width="200dp"

android:layout_height="wrap_content"

结论1:当宽高设置为wrap_content时,Padding会增加控件的宽高;

结论2:当宽高设置为精确的dp时,Padding会对控件的内容(这里是文字)有影响;

验证结论2:

android:padding="10dp"

android:layout_width="200dp"

android:layout_height="30dp"

如图:



1.Padding的基本使用

在XML中:

android:padding="XXdp"

android:paddingBottom="XXdp"

android:paddingLeft="XXdp"

android:paddingRight="XXdp"

android:paddingTop="XXdp"

android:paddingStart="xxdp"

android:paddingEnd="xxdp"

在JavaCode中

setPadding(left,top,right,bottom);

setPaddingRelative(start,top,end,bottom);

这里特别说明下Start和End属性:

这2个属性是在Api17(4.2)以后开始支持,为了支持RTL布局(Right-to-Left),

在我国的阅读方式是:从左到右,而国外有些国家是:从右到左的

如果是从左到右,start=left,end=right。反之,即在RTL布局中start=right,end=left;

TextView中的相关源码:

caseLAYOUT_DIRECTION_RTL:

mUserPaddingLeftInitial= padding.right;

mUserPaddingRightInitial= padding.left;

internalSetPadding(padding.right, padding.top, padding.left, padding.bottom);

break;

caseLAYOUT_DIRECTION_LTR:

default:

mUserPaddingLeftInitial= padding.left;

mUserPaddingRightInitial= padding.right;

internalSetPadding(padding.left, padding.top, padding.right, padding.bottom);

当然如果不用兼容国外的,你也可以完全不用这2个属性,不用在乎warning。

如果有强迫症的话,可以写上所有属性。注意start所对应的是left还是right。

android:paddingStart="16dp"

android:paddingEnd="0dp"

android:paddingLeft="16dp"

android:paddingRight="0dp"


2.Padding的注意事项

2.1.将Padding设置为负值无效:

我们知道padding为正值的时候,如果宽高为定值,会影响到文字内容。如果宽高为wrap_content,会影响到控件的宽高。

如果设置负值呢? 发现和“0dp”一样的效果。

在View的源码中发现:

mUserPaddingLeftInitial,

topPadding >=0? topPadding :mPaddingTop,

mUserPaddingRightInitial,

bottomPadding >=0? bottomPadding :mPaddingBottom);

if(isLayoutRtl()) {

mPaddingLeft= (mUserPaddingEnd>=0) ?mUserPaddingEnd:mUserPaddingLeftInitial;

mPaddingRight= (mUserPaddingStart>=0) ?mUserPaddingStart:mUserPaddingRightInitial;

}else{

mPaddingLeft= (mUserPaddingStart>=0) ?mUserPaddingStart:mUserPaddingLeftInitial;

mPaddingRight= (mUserPaddingEnd>=0) ?mUserPaddingEnd:mUserPaddingRightInitial;

}

从这些三目运算符,可以得知;如果这个值大于0,则给予这个值,否则结果为0

2.2.Padding设置在固定的宽高控件中需要注意文字显示区域的问题

如结论2的效果

2.3.Padding是否可以和PaddingLeft等“小弟”一起使用

可以,当Padding存在的时候,PaddingLeft等“小弟”统统无效。

3.Magin的基本使用

在XML中

android:layout_margin="xxdp"

android:layout_marginBottom="xxdp"

android:layout_marginTop="xxdp"

android:layout_marginLeft="xxdp"

android:layout_marginRight="xxdp"

android:layout_marginEnd="xxdp"

android:layout_marginStart="xxdp"

在JavaCode中

由于margin属性是由其父控件,所以需要从父控件获得它的LayoutParams.

ViewGroup.MarginLayoutParams marginLayoutParams= (ViewGroup.MarginLayoutParams)tv.getLayoutParams();

marginLayoutParams.topMargin+=100;

tv.requestLayout();

4.Margin的注意事项

4.1.Margin可以设置为负值:

如果是marginleft设置负值,他就相当于设置marginright为正值。

android:layout_marginLeft="100dp"


android:layout_marginLeft="-100dp"


Margin可以设置负值,可以利用这一个特性来实现ListView的侧滑删除等效果。

4.2.Margin是否可以和MarginLeft等“小弟”一起使用?

可以一起使用,当Margin属性存在的时候,MarginLeft等“小弟”通通无效。

CSS中的盒子模型和定位 一、盒子模型(Box Model) 1、盒子的组成 2、 浅析盒子模型的CSS属性 二、定位(Positioning) 1、了解浮动 2、块级格式化上下文BFC(Block Formating Context) 3、了解定位 阅读详情

相关推荐

圣杯模型和双飞翼模型浅析(高度)

圣杯和双飞翼都旨在实现三列的布局,中间内容宽度自适应,两边内容宽度固定。 特别注意的是查找了许多资料发现竟然几乎没有资料提到过这两个模型的高度问题,即使是网上给的代码也几乎没有实现高度自适应的问题,也许大家都觉得太简单甚至不值一提,但是我却为此纠结了很久,所以下面我也会提到如何实现高度自适应。 两者的区别我总结为三点: 1、DOM结构不同,相对于圣杯,双飞翼为中间内容单独加了一个容器以便ma

PethZhang的博客 2505

android 属性大全

android:alpha   setAlpha(float) 属性说明: 视图透明度,值在0-1之间。0为完全透明,1为完全不透明。    android:background   setBackgroundResource(int) 属性说明: 视图背景    android:clickable   setClickable(boolean) 属性说明: 视图是否可点击    android:

qq_27173485的博客 1209

人工智能训练师技能等级认定四级技能考核试卷-样题1

本文为人工智能训练师四级技能考核试卷,包含六个实操考核项目,总分100分,考试时间150分钟。试卷涵盖数据处理、模型训练准备及系统维护等核心技能:1)垃圾分类数据集规范与处理(30分),要求评估数据格式并编写Python处理代码;2)学生成绩数据集分析(20分),涉及数据预处理、可视化及相关性分析;3)数据标注审核(10分),重点审核标注准确性;4)智能数据服务系统维护与优化(40分),包括安全帽数据集的项目创建、数据处理及平台协作。考核强调Python编程、数据处理平台操作及AI工作流程的实践能力。

weixin_42221934的博客 440

Android TextView的图片和文字居中探索

效果图: TextView图片文字居中实现思路:获取TextView中图片和文字的宽度和高度,并根据TextView的宽高计算居中所需要的偏移量。 实现核心代码: @Override protected void onDraw(Canvas canvas) { if (isTextDrawableCenter) { if (dr...

u010218170的博客 2760

华为防火墙双线路配置实战:5分钟搞定主备自动切换(含健康检查避坑指南)

本文详细介绍了华为防火墙双线路配置实战,包括主备自动切换和健康检查机制的优化技巧。通过智能健康检查机制,华为防火墙能实现毫秒级故障自动切换,确保网络高可用性。文章提供了从架构设计到实战配置的全流程指南,并分享了常见配置误区与解决方案,帮助中小企业快速搭建稳定可靠的网络架构。

weixin_30872337的博客 605

手把手教你用Sentinel-1和SNAP处理InSAR数据:从下载到生成沉降图(附Python脚本)

本文详细介绍了如何使用Sentinel-1数据和SNAP软件处理InSAR数据,从下载到生成地表沉降图的全流程。通过Python脚本实现自动化处理,适用于城市扩张和地质脆弱带的地表沉降监测,提供高性价比的毫米级形变监测方案。

weixin_26800111的博客 267

Android View 属性大全

(1)视图透明度,值在0-1之间,0为完全透明,1为完全不透明 android:alpha setAlpha(float) (2)视图背景 android:background setBackgroundResource(int) (3)视图是否可点击 android:clickable setClickable(boolean) (4)设置view的备注说明,作为一种辅助功能提供,为一些...

Venus 的博客 2916

整理的15个公开且可直接使用的电力视觉输电线路领域数据集

而巡检数据是目前来说影响我们做科研的最大阻碍,为此本内容主要总结了,现有的且公开免费的巡检数据集,供大家使用。STN PLAD数据集133个航拍图像,五个电力部件:电力塔及其塔的ID、绝缘子,防震锤,联板(yoke),图像的尺寸在5472×3648到5472×3078。IDID数据集:2000张图像,包含三个类别,正常绝缘子,破损绝缘子和闪络绝缘子三个类别,用于目标检测的实验。TTPLA数据集,用于实例分割,1100张尺寸为3840×2160,包含两个类别,电力杆塔和电力线。主要用于电力杆塔的目标检测。

weixin_42048361的博客 5019

沉浸式设置

AndroidBarUtils.java import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.graphics.Color; import ...

明耀的博客 492

手把手教你绕过网易易盾验证码:滑块、点选、语序全攻略

本文深度解析了以网易易盾为代表的现代验证码技术,重点探讨了滑块、点选、语序及空间推理等交互式验证码的工作原理与对抗策略。文章从行为验证和空间推理的核心逻辑出发,剖析了验证码交互的数据流与关键参数,并提供了模拟人类行为轨迹、维护设备指纹等工程实践方法,旨在帮助开发者在合规前提下设计更健壮的自动化流程。

3c4x5z6v7b的博客 708

STM32F407+OV2640的DCMI+DMA双缓冲JPEG图像采集系统

在嵌入式视觉系统中,数字摄像头接口(DCMI)是MCU连接CMOS图像传感器的关键硬件通道,其与DMA协同实现零CPU干预的高速数据流采集;而JPEG作为一种基于DCT变换与量化压缩的有损图像格式,依赖传感器端硬件编码引擎才能满足实时性要求。理解DCMI三重同步时序(PCLK/HSYNC/VSYNC)与DMA双缓冲机制的流水线协作原理,是突破带宽瓶颈、避免FIFO溢出和帧丢失的技术基础。该架构广泛应用于智能硬件、工业检测与边缘AI前端等需低功耗、高可靠图像捕获的场景,本文以OV2640与STM32F407为

weixin_42103128的博客 157

浅析 Margin 和 Padding 的区别

属性用于设置,即控制。属性用于设置内边距,即。margin 是用来隔开元素与元素的间距;padding 是用来隔开元素与内容的间隔。

2302_79327676的博客 3082

动网格-网格重构之铺层(三)

运动区域可以是边界区域 (Boundary Zone),也可以是单元区域 ( Cell Zone)。指定了体网格再生方法后,FLUENT自动地根据运动区域(dynamic zones)的运动来调整内部节点以再生体网格。必须保留至少一层网格。(4)如果边面的法向和运动方向偏角较大,生成的网格扭斜度会比较大铺层算法不适用于边界形状变化较大的情况。(1)体网格再生方法的选择(Smoothing,Layering,Remeshing);(2)适用网格种类:四边形、六面体、三棱柱(网格的分布要服从一定的规则)。

weixin_44386973的博客 2095

html5 margin padding,CSS中margin和padding的区别浅析

在CSS中margin是指从自身边框到另一个容器边框之间的距离,就是容器外距离。在CSS中padding是指自身边框到自身内部另一个容器边框之间的距离,就是容器内距离。下面讲解 padding和margin常用的用法一、padding1、语法结构(1)padding-left:10px; 左内边距(2)padding-right:10px; 右内边距(3)padding-top:10px; 上内边...

weixin_29783407的博客 461

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

weixin_42412049的博客 2278

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

浅析CSS中的margin属性

学过一定css的人都知道,css里面有个盒模型,margin作为盒模型的重要组成部分,我们很有必要把它搞懂! 那什么是margin呢?简单点来说,在同辈元素之间的就是元素到元素之间的距离,在父子元素之间就是子元素到父元素边框之间的距离。 margin属性可以设置 四种值:auto(浏览器计算外边距)、length(规定以具体单位计的外边距值,比如像素、厘米等。默认值是 0px)、%(规定基于父...

BlueDreamerr的博客 882

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

浅析CSS盒模型及box-sizing属性

W3C规定的盒模型如下: 我们现在从外往内依次说明,最外层是margin,即外边距;往里是border,即边;继续往里是padding,即内边距;最里层是content,即内容区域;width和heigh是content的宽和高。 用一个比喻来形容盒模型非常贴切。代码如下:           盒模型浅析             .container{          

许保殿的博客 6323

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

margin和padding区别和应用场景_浅析 VO、DTO、DO、PO的概念、区别和用处

概念:模型:VO与DTO的区别VO与DTO的应用DTO与DO的区别DTO与DO的应用DO与PO的区别DO与PO的应用《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot 实现原理与...

weixin_39525097的博客 210

浅析CSS postion属性值用法

本文摘录地址:http://www.cnblogs.com/chinafine/articles/1765967.html#undefined 下面分别讲述这四个属性,以简单代码表示 <div id="parent"> <div id="sub1">sub1</id> <div id="sub2">sub2<...

113

圣杯布局浅析

本文转载于:猿2048网站圣杯布局浅析 布局思路: 外面一个大div,里面三个小div(都是浮动)。实现左右两栏宽度固定,中间宽度自适应。中间栏优先渲染。 1.基本布局 外面一个大div,里面三个小div。注意中间栏写在前面,优先渲染。 2.外面大di...

chuluxie3918的博客 59

html背景命名,浅析JavaScript中的CSS属性及命名规范

许多CSS样式属性的名字中都有连字符,在JavaScript中,连字符被解释为减号。因此,CSS2Properties对象的属性名和真正的CSS属性名有点不同。如果一个CSS属性名含有一个或多个连字符,在JS中则需要删除了连字符,并且原来紧接在连字符后的字母改为大写。要注意的是float是JS的关键字,所以在JS中float被写作cssFloat与或floatStyle。下面是CSS自身属性与Ja...

weixin_29572661的博客 169

盒子模型浅析

本文转载于:猿2048网站https://www.mk2048.com/blog/blog.php?id=kabcajb&title=%E7%9B%92%E5%AD%90%E6%A8%A1%E5%9E%8B%E6%B5%85%E6%9E%90 上篇文章总结了块级元素和行内元素 这篇...

chuluxie3918的博客 186

worldpress小工具自定义html,WorldPress Grid html代码设置浅析,代码非常简洁

WorldPressGridhtml代码浅析:首先,多用公共样式里面的标签(h1\h2..p.),无论用了其中的某一个,其定义的样式都是全局的,这样的好处就大大减少了css代码量,网络维护起来可想是多么的方便了.forinstance:h3{margin-top:20px;}其次,值相等里面的margin,padding样式定义的值都是有一定的联系的.forinstance:h3{margin-...

weixin_39609423的博客 373

浅析Android的布局

Android两大布局 线性布局 常用属性 orientation:布局中的排列方式有horizon(水平方向),vertical(垂直方向)两种排列方向。 gravity:控制组件所包含的元素对齐方式。 layout-gravity:控制组件在父容器里面的元素对齐方式。 layout-height:布局的高度。 layout-weigh:布局的宽度。 ID:为组件设置一个标志位,以便...

Zwousika的博客 349

谈谈CSS的边距合并

今天通过和一些师弟的交流,发现他们对外边距合并不是很理解。 其实浅析CSS的外边距合并的话,是很容易明白是怎么一回事儿的。但是如果想要深入了解margin这个神奇的属性,那可得费一番功夫了。 我是一个菜鸟,在这里当然不会解释得太复杂,在这里我只是想谈谈我对外边距合并的理解。 其实要理解清楚什么是外边距合并,最简单的方法就是自己动手试试。我认为,理解外边距合并的关键就在于理解这句话:“

C860_zy的专栏 865
上一篇: Android动画插值器简单使用
下一篇: LinearLayout
Client_Block
博客等级 码龄11年 33粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值