Android开发之gravity和layout_gravity之间的区别-案例演示

2015-10-23 16:13 阅读 1,891 次 评论 3 条
版权声明:本文著作权归去逛街所有,未经许可禁止转载,谢谢支持!
转载请注明出处:http://go.teachcourse.cn/488.html

我经常分不清楚gravity和layout_gravity到底怎么用,所以在布局的时候展示不出想要的效果,今天刚好做了一个案例,趁此弄明白了gravity和layout_gravity的区别。下面先看看效果图:

在这个案例里,LinearLayout父控件中放置四个TextView,在TextView中使用gravity和layout_gravity设置该TextView的位置,显示的图标使用了drawableTop属性,然后添加图片资源即可,最后达到了上图的效果。
布局资源的源码:

  • [sourcecode]<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:orientation="horizontal"
    android:gravity="center" >

    <TextView
    android:id="@+id/news_tv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:layout_weight="1"
    android:drawableTop="@drawable/haed_ren_bg"
    android:gravity="center"
    android:singleLine="true"
    android:text="新闻"
    android:textSize="@dimen/list_cat_size" />

    <TextView
    android:drawableTop="@drawable/haed_ren_bg"
    android:id="@+id/news_tv2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:gravity="center"
    android:layout_weight="1"
    android:singleLine="true"
    android:text="政务"
    android:textSize="@dimen/list_cat_size" />

    <TextView
    android:drawableTop="@drawable/haed_ren_bg"
    android:id="@+id/news_tv3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:gravity="center"
    android:layout_weight="1"
    android:singleLine="true"
    android:text="社区"
    android:textSize="@dimen/list_cat_size" />

    <TextView
    android:drawableTop="@drawable/haed_ren_bg"
    android:id="@+id/news_tv4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:gravity="center"
    android:layout_weight="1"
    android:singleLine="true"
    android:text="微信"
    android:textSize="@dimen/list_cat_size" />
    </LinearLayout>[/sourcecode]

分析:

gravity:表示在当前控件内的text属性值相对于该控件,设置text上下左右或居中的位置,在这个在上面的演示效果中,如果我们没有设置gravity属性值为center,那么效果如下:

我们看到控件TextView的内容“新闻、政务、社区、微信”都默认左边对齐,所以可以判断gravity用于设置控件内容相对于当前控件的位置。
layout_gravity:这个属性设置的位置的“参照物”不同,达到的效果是相对于当前控件的父控件上下左右或居中的位置,同样,如果我们在上面的布局文件中去掉layout_gravity属性,保留gravity属性,看看效果如下:

我们会发现,效果和添加了layout_gravity的效果一样呢?这是不是说,layout_gravity属性不起作用呢?这是因为在案例的TextView中,我们设置了drawableTop这个属性,同时LinearLayout的高度是固定的,那么默认的layout_gravity属性值是center,但如果我们在最后一个TextView里面去掉drawableTop属性后,在设置layout_gravity属性为top,效果就出来了,看下图:

如果将layout_gravity属性改为bottom,效果如下:

总结:

gravity和layout_gravity并不是所有的控件都有的属性,我们会发现该当前控件包含是某个控件的子控件的时候,可以设置子控件的layout_gravity属性,在包含text属性的Button、TextView控件中可以设置gravity的属性值,所以具体哪些控件具备gravity和layout_gravity属性,大体上说是:存在着父控件的当前控件可以设置layout_gravity属性,包含text属性内容的控件可以设置gravity属性。

关注公众号 扫一扫二维码,加我QQ

如果文章对你有帮助,欢迎点击上方按钮关注作者

来源:去逛街每周一次,深入学习Android教程,关注(QQ1589359239或公众号TeachCourse)
分类:生活的日志 标签:

发表评论

呲牙 憨笑 坏笑 偷笑 色 微笑 抓狂 睡觉 酷 流汗 鼓掌 大哭 可怜 疑问 晕 惊讶 得意 尴尬 发怒 奋斗 衰 骷髅 啤酒 吃饭 礼物 强 弱 握手 OK NO 勾引 拳头 差劲 爱你

表情

  1. TeachCourse
    TeachCourse 【农民】

    挺好的技术博客,谢谢博主分享

  2. 巴巴博主
    巴巴博主【站长】

    不用客气,有什么不懂的,欢迎留言咯!

  3. 匿名 【农民】

    谢谢博主分享,恍然大悟