layout_gravity 与 gravity
来源:互联网 发布:红楼梦解析知乎 编辑:程序博客网 时间:2024/06/06 00:13
前言
layout_gravity 和 gravity 是我们经常在 xml 中使用到的属性,可以说它们与我们的 UI 布局密不可分。使用它们给我们的开发带来了极大的便捷。但要知道,UI 设计是精细且繁琐的,我们如果不能很好的了解它们的不同和各种值的作用,就会造成差之毫厘谬以千里的结果,那是我们所不愿看到的。
这个博客就来讲解一下 layout_gravity 和 gravity的不同,还有它们的各种值的作用。
两者不同
gravity 的中文意思是”重心“,就是表示 View 横向和纵向的停靠位置。
android:gravity 是对 View 控件本身来说的,对 TextView 来说就是用来设置 View 本身的文本应该显示在 View 的什么位置,默认值是左侧。
android:layout_gravity 是相对于包含该元素的父元素来说的,设置该元素在父元素的什么位置。比如TextView,android:layout_gravity 表示 TextView 在界面上的位置。
一个小例子:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:text="button" android:textSize="25sp" android:gravity="bottom|center" android:layout_gravity="bottom|center_horizontal" android:layout_width="120dp" android:layout_height="120dp" /> <Button android:textSize="25dp" android:text="button" android:gravity="top|left" android:layout_gravity="bottom|right" android:layout_width="120dp" android:layout_height="120dp" /></LinearLayout>
Button1并没有按照我们设置的 layout_gravity 属性那样显示在界面的下方正中央,Button2也没有显示在界面的右下方。这是因为我们设置了LinearLayout的 orientation 属性为”vertical”。
对于LinearLayout如果设置 orientation=”vertical”,那么layout_gravity的设置只在水平方向生效,如上图Button1显示在屏幕的水平正中央,而Button2显示在水平方向的最右边。
如果设置 orientation=”horizontal”,那么layout_gravity属性只在垂直方向生效。
属性
在这之外,还有 start 和 end 两个属性,之所以单独拿出来,是因为我们在使用 left 和 right的时候,会提示将left替换为start,right 换成 end,说明它们的功能有相同之处。
left和right代表一种绝对的对齐,而start和end表示基于阅读顺序的对齐。
主要的阅读顺序有两种:从左向右(LTR)和从右向左(RTL)。
当使用left的时候,无论是LTR还是RTL,总是左对齐的;而使用start,在LTR中是左对齐,而在RTL中则是右对齐。所以会建议我们使用 start 和 end,在其它时候它们是一样的。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="top" android:gravity="top" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView02" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="bottom" android:gravity="bottom" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView03" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="left" android:gravity="left" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView04" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="right" android:gravity="right" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView05" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="center_vertical" android:gravity="center_vertical" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView06" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="fill_vertical" android:gravity="fill_vertical" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView07" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="center_horizontal" android:gravity="center_horizontal" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView08" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="fill_horizontal" android:gravity="fill_horizontal" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView09" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="center" android:gravity="center" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView10" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="fill" android:gravity="fill" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView11" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="clip_vertical" android:gravity="clip_vertical" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView12" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="clip_horizontal" android:gravity="clip_horizontal" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView13" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="start" android:gravity="start" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/> <TextView android:id="@+id/TextView14" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:text="end" android:gravity="end" android:textColor="#ffffff" android:background="#ff0000" android:layout_margin="1px"/></LinearLayout>
结束语:本文仅用来学习记录,参考查阅。
- layout_gravity 与 gravity
- gravity与layout_gravity
- gravity与layout_gravity的区别
- android:layout_gravity与android:gravity
- Android布局:gravity与layout_gravity
- android:gravity与android:layout_gravity
- layout_gravity 与gravity 的区别
- layout_gravity 与gravity 的区别
- android:gravity 与android:layout_gravity
- Android layout_gravity 与gravity 属性
- android layout_gravity 与gravity 区别
- android:gravity与android:layout_gravity
- gravity与layout_gravity的区别
- layout_gravity与gravity的区别
- android:layout_gravity与android:gravity
- gravity与layout_gravity的区别
- gravity 与layout_gravity的区别
- gravity与Layout_gravity的区别
- (转)java 中的try catch finally 语句中含有return语句的执行情况(总结版)
- Eclipse 安装 windowBuilder(图形化插件)
- 455. Assign Cookies
- 定位网页元素的8中方法
- redis 简单总结
- layout_gravity 与 gravity
- R语言手动设置xy轴刻度
- URAL
- C语言中对于for语句,变量赋初值问题探讨
- c3p0和dbcp的比较
- hadoop中namenode非HA模式的工作机制
- C++模板知识总结
- Asp.net MVC中授权过滤器,用于只有登录后才能访问其界面
- 选择比努力更重要