layout_gravity和gravity的用法

layout_gravity和gravity的用法也谈layout_gravity和gravity的用法相信对于Android的初学者来说,大家都曾经被layout里这两个极其相似的属性迷惑过。简单使用一下搜索工具,我们就不难找到下面这样的答案:layout_gravity表示组件自身在父组件中的位置gravity            表示组件的子组件在组件中的位置看似很简单嘛~)貌似大伙瞅一眼就明白了。

大家好,又见面了,我是你们的朋友全栈君。

相信对于Android的初学者来说,大家都曾经被layout里这两个极其相似的属性迷惑过。

简单使用一下搜索工具,我们就不难找到下面这样的答案:

layout_gravity 表示组件自身在父组件中的位置

gravity             表示组件的子组件在组件中的位置

看似很简单嘛~)

貌似大伙瞅一眼就明白了。今天我要说的就是这貌似瞅一眼就明白的道理。
为什么这么简单的道理,总有同学会发现,在“某些时候”,layout_gravity这个属性不好使了,失去了它应有的作用。

于是同学们又开始使用搜索工具,一边还不停的骂:Google做的这个layout真他妈的不好使!
下面我们就网上找来的一个例子来简单描述一种layout_gravity失效的情况。

  1. <?xml version=”1.0″ encoding=”utf-8″?>
  2. <!– android:gravity设置了按钮上面的文字的显示位置,而android:layout_gravity设置了按钮在布局中的显示位置。 –>
  3. <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
  4.         android:orientation=”vertical”
  5.         android:layout_width=”fill_parent”
  6.         android:layout_height=”wrap_content”>
  7.         <Button android:layout_width=”250dip”
  8.                 android:gravity=”right”
  9.                 android:layout_height=”wrap_content”
  10.                 android:text=”我居右显示”
  11.                 android:layout_gravity=”right” />;
  12. </LinearLayout>

复制代码

这段代码的展现效果如下:!

 

layout_gravity和gravity的用法

 

然后我们再看下面这段代码:

  1. <?xml version=”1.0″ encoding=”utf-8″?>
  2. <!– android:gravity设置了按钮上面的文字的显示位置,而android:layout_gravity设置了按钮在布局中的显示位置。 –>
  3. <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
  4.         android:layout_width=”fill_parent”
  5.         android:layout_height=”wrap_content”>
  6.         <Button android:layout_width=”250dip”
  7.                 android:gravity=”right”
  8.                 android:layout_height=”wrap_content”
  9.                 android:text=”我居右显示”
  10.                 android:layout_gravity=”right” />
  11. </LinearLayout>

复制代码

这段代码我们一样设置了android:layout_gravity=”right”,但是它的展现效果却是下面这样的:

 

layout_gravity和gravity的用法

 

于是我们前面所说的情况就发生了,“Google做的这个layout真他妈的不好使!”

问题究竟出在哪里了呢?
细心一点的同学就会发现,下面的这段代码,最外层的LinearLayout少了这样一个属性:androidlayout_gravity和gravity的用法rientation=”vertical”
不错,正是缺少了这个属性才导致了android:layout_gravity=”right”的失效。
因为LinearLayout默认的是:androidlayout_gravity和gravity的用法rientation=”horizontal

也就是说,只有在作为父layout的LinearLayout是androidlayout_gravity和gravity的用法rientation=”vertical” 的时候,android:layout_gravity=”right”才会生效。

到这里本次“讲座”可以结束了吗? No!

看完上面的内容,有同学也许还会发现,当外层的LinearLayout为androidlayout_gravity和gravity的用法rientation=”vertical” 的时候,android:layout_gravity=”bottom”失效了

看到这里相信大家都明白了

下面我们还需要做一个简单的总结:
当作为父layout的LinearLayout的属性为androidlayout_gravity和gravity的用法rientation=”vertical” 的时候,android:layout_gravity=”?”这里设为横向的时候才能生效。比如:left,right,center_horizontal等

当作为父layout的LinearLayout的属性为androidlayout_gravity和gravity的用法rientation=”horizental” 的时候,android:layout_gravity=”?”这里设为纵向的时候才能生效。比如:top,bottom,center_vertical等;

有一个比较特殊的是center,不管是横向还是纵向的时候,它总有一个方向起作用layout_gravity和gravity的用法

另外有几个别急面生的:fill_vertical,fill_horizontal,fill,clip_vertical,clip_horizontal
这几个以前没留意过,莫非是新版本的SDK中,新引进的?分散对齐?很迷惑。
有用过的同学还请不吝赐教一下
layout_gravity和gravity的用法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159725.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RestSharp_简单搜索怎么使用

    RestSharp_简单搜索怎么使用C#使用restsharp调用接口

    2025年9月6日
    3
  • [RK3399/RK3328][Android10.0]Ethernet:以太网设置静态ip,重启后无法获取IP的问题「建议收藏」

    [RK3399/RK3328][Android10.0]Ethernet:以太网设置静态ip,重启后无法获取IP的问题「建议收藏」测试平台Platform:RK3399/RK3328OS:Android10.0现象设置中设置以太网为静态ip,设置后使用ifconfig查看ip显示正常。然后重启,极大概率出现开机后设备没有获取到ip.分析解决测试后发现了几点规律:设置静态ip会开机获取不到ip,但是设置动态ip无问题没有获取到ip时,使用ifconfig查看,发现网卡设备连接正常。此时拔插网线,或者使用ifconfigeth0down+ifconfigeth0up来开关一次设备后,就能正常获取到ip

    2022年5月29日
    188
  • IntelliJ IDEA主题背景设置护眼色「建议收藏」

    IntelliJIDEA主题背景设置护眼色(豆绿色)虽然idea的默认黑色,编码很有范,但是对于长期在电脑旁工作,对眼睛很有伤害。对于设置豆绿色对于眼睛可以减少疲劳,可以保护视力。1、Setting设置中,找到”Editor”—>ColorScheme—>General—>…

    2022年4月12日
    816
  • IAR for ARM介绍、下载、安装与注册

    IAR for ARM介绍、下载、安装与注册推荐分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang推荐在我公众号「strongerHuang」和博客阅读该专栏1.EWSTM8系列教程01_IAR介绍、下载、安装和注册2.EWSTM8系列教程02_新建基础软件工程3.EWSTM8系列教程03_…

    2022年5月16日
    151
  • c语言将时速转换成配速,配速与时速换算(跑步配速和时速换算)

    c语言将时速转换成配速,配速与时速换算(跑步配速和时速换算)时间除以路程,一般时间单位用分,路程单位用千米。比如20分钟跑了3千米,那配速就是20/3=6.66,也就是6分40秒每公里,一般说成640的配速。配速是针对长跑来说的,对短跑和中跑是不采用这个概念的。马拉松运动讲究匀速,在匀速的状态下才能更好地发挥自己的实力。很多跑步爱好者很注意控制速度。他们根.时速的意思是当时跑步的速度,配速是平均每公里耗时几分钟消耗是指跑步消耗的热量相当于每小时跑多少千…

    2022年6月28日
    67
  • java中的向上取整和向下取整

    java中的向上取整和向下取整向上取整:比自己大的最小整数。向下取整:比自己小的最大整数。publicclassRoundingUp{publicstaticvoidmain(String[]args){System.out.println(Math.ceil(1.5));//2.0System.out.println(Math.ceil(-1.5));//…

    2022年6月21日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号