android:layout_gravity和android:gravity属性的区别

时间:2020-12-06 00:05:44

一、介绍:

   gravity的中文意思就是”重心“,就是表示view横向和纵向的停靠位置

  (1).android:gravity:是对view控件本身来说的,是用来设置view本身的内容应该显示在view的什么位置,默认值是左侧。也可以用来设置布局中的控件位置

  (2).android:layout_gravity:是相对于包含改元素的父元素来说的,设置该元素在父元素的什么位置;

  比如TextView: android:layout_gravity表示TextView在界面上的位置,android:gravity表示TextView文本在TextView的什么位置,默认值是左侧.

二、使用过程中失效

  • android:gravity : 表示当前View,即控件,内部的东西的,对齐方式
    • 常见的是:
      • TableRow中的Button
      • EditText(内部)的文字
      • Button(内部)的文字
  • android:layout_gravity: 表示当前View,即控件本身在父一级内的(即父一级控件所给当前子控件所分配的显示范围内)的对齐方式
    • 常见的是:
      • 当前EditText(在父一级LineLayout所分配给其的显示范围内)的对齐方式
      • 当前的Button(在父一级TableRow所分配给其的显示范围内)的对齐方式 ->此处需要注意的是,很多时候,改变Button内的layout_gravity,常看不到改动的效果,是因为其显示范围和位置,已经由父一级的TableRow的gravity决定了。
      • 下面的代码是设置button的显示效果
 <?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:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="right"
android:text="文字的gravity属性" /> </LinearLayout>

结果如下:

android:layout_gravity和android:gravity属性的区别

可以看得出来button的位置由于layout_gravity的right属性位于view的右侧,而该button的内容也由于gravity的设置位于了右侧。

但是当修改了外层的linearlayout的orientation属性时:就会发生变化

 <?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="horizontal" > <Button
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="right"
android:text="文字的gravity属性" /> </LinearLayout>

android:layout_gravity和android:gravity属性的区别

可以看得出来此处android:layout_gravity="right"属性设置无效。

通过验证得出来:

        (1) 当我们的LinearLayout的orientation的属性值是horizontal也就是水平方向时:--->我们可以设置控件的layout_gravity属性值为:竖直方向的变化比如bottom,top,center_vertical。

        (2) 当我们的LinearLayout的orientation的属性值是vertical也就是竖直方向是:--->我们可以设置控件的layout_gravity属性值为:水平方向的变化比如right,left,center_horizontal。

        (3)这个结论表明,layout_gravity属性时子控件相对于父布局的相对位置,一旦父布局写死了方向水平或者垂直,在该方向上就只能是默认变化,子控件无法干预,但是在与之相对的方向上子控件可以*变幻,想想也是可以理解的,老子的方向订好了,你只能是往前一点或者往后一点,想直接达到终点这不行,但是允许你出去找小朋友玩耍~~~

        (4)有一个比较特殊的是center,不管是横向还是纵向的时候,它总有一个方向起作用

  • android:gravity : 表示当前View,即控件,内部的东西的,对齐方式
    • 常见的是:
      • TableRow中的Button
      • EditText(内部)的文字
      • Button(内部)的文字
  • android:layout_gravity: 表示当前View,即控件本身在父一级内的(即父一级控件所给当前子控件所分配的显示范围内)的对齐方式
    • 常见的是:
      • 当前EditText(在父一级LineLayout所分配给其的显示范围内)的对齐方式
      • 当前的Button(在父一级TableRow所分配给其的显示范围内)的对齐方式 ->此处需要注意的是,很多时候,改变Button内的layout_gravity,常看不到改动的效果,是因为其显示范围和位置,已经由父一级的TableRow的gravity决定了。
android:layout_gravity和android:gravity属性的区别

android:layout_gravity和android:gravity属性的区别的更多相关文章

  1. android&colon;layout&lowbar;gravity和android&colon;gravity属性的区别1

    一.介绍: gravity的中文意思就是"重心",就是表示view横向和纵向的停靠位置 (1).android:gravity:是对view控件本身来说的,是用来设置view本身的 ...

  2. android&colon;layout&lowbar;gravity 和 android&colon;gravity 的区别

    gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...

  3. android&colon;layout&lowbar;gravity和android&colon;gravity的区别

    1.首先来看看android:layout_gravity和android:gravity的使用区别. android:gravity: 这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置 ...

  4. 【转】android&colon;layout&lowbar;gravity和android&colon;gravity的区别

    1.首先来看看android:layout_gravity和android:gravity的使用区别. android:gravity: 这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置 ...

  5. android&colon;layout&lowbar;gravity 和 android&colon;gravity 的区别(转载)

    转自:http://www.cnblogs.com/ghj1976/archive/2011/04/26/2029535.html gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思 ...

  6. android&colon;layout&lowbar;gravity和android&colon;gravity的区别 &lpar;转&rpar;

    转:http://blog.csdn.net/shakespeare001/article/details/7843460 1.首先来看看android:layout_gravity和android: ...

  7. android&colon;layout&lowbar;gravity 和 android&colon;gravity

    android:layout_gravity和 android:gravity的区别,android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着 换个属性设置,不过不设置默认是在 ...

  8. android&colon;layout&lowbar;gravity 和android&colon;gravit的区别?

    Android:layout_gravity 和android:gravit的区别? android:gravity是调整元素本身的内容或元素包含的子元素显示的位置,默认是显示在左侧 android: ...

  9. layout&lowbar;gravity 属性和 gravity属性的区别

    安卓中  LinearLayout有两个非常相似的属性: android:gravity与android:layout_gravity. 区别在于: android:gravity 属性是对该view ...

随机推荐

  1. Zabbix邮件报警--&gt&semi;Email

    Version:3.0.1 邮件报警有两种media 1.Email zabbix发送报警邮件到指定smtp服务器(使用系统自带的sendmail,发送邮箱是zabbix服务器的本地邮箱账号) 再由s ...

  2. cvc-complex-type&period;2&period;4&period;c&colon; The matching wildcard is strict&comma; but no declaration can be found for element &OpenCurlyQuote;dubbo&colon;application’&period; – schema&lowbar;reference&period;4&colon; Failed to read schema document

    解决办法: 1.直接百度下载一个dubbo.xsd文件 2.myeclispe-->window-->preferences-->xml catalog-->add 完美解决!

  3. LeetCode&lpar;&rpar; 数字1的个数

    int ones = 0; for (long m = 1; m <= n; m *= 10) { long a = n/m, b = n%m; ones += (a + 8) / 10 * m ...

  4. 18 Loader 总结

    1. Loader 装载器 Android3.0以后出来的 它可以使Activity和Fragment 异步加载数据 变得简单(Loader里封装了AsyncTask) Loader特点: 1,对每一 ...

  5. KVO的使用二:常用方法及小技巧

    (文章及代码接上一篇) options详解: KVO的注册方法中有一个options枚举,用来确定观察者的接收消息方法接收的信息,那么具体有什么关联呢?下面通过一段代码来验证是如何关联的.依次选择op ...

  6. Complex类的设计与改进

    Complex类 源码 #include <cmath> #include <iomanip> #include <iostream> #include <s ...

  7. 将本地项目上传至github

    1.新建仓库:用于存放要上传的项目(尽量不要添加README). 2.找到要上传的文件夹A,右键点击git bash here,打开git界面 3.在命令行中,输入“git init”,使文件夹A加入 ...

  8. &num;WEB安全基础 &colon; HTTP协议 &vert; 0x1 TCP&sol;IP通信

    TCP/IP是如何通信的呢? 请看图 用TCP/IP协议族通信时,会通过分层顺序与对方进行通信.发送端从应用层往下走,接受层从链路层往上走. 客户端为了浏览界面在应用层发送请求,为了方便传输在传输层的 ...

  9. OSGI企业应用开发(三)Eclipse中搭建Equinox运行环境

    上篇文章介绍了如何在Eclipse中搭建Felix的运行环境,我们需要將Bundle发布到Felix框架的bundle目录下,Felix框架启动时才会自动加载这些Bundle,否则需要在Felix框架 ...

  10. 在PHP中使用curl&lowbar;init函数的说明

    $ch = curl_init(); $c_url = 'http://www.baidu.com'; $c_url_data = "product_&type=".$ty ...