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

2015-10-23 16:13 评论 3 条

摘要:

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

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

布局资源的源码:

  1. <LinearLayout  
  2. android:layout_width="match_parent"  
  3. android:layout_height="match_parent"  
  4. android:layout_alignParentBottom="true"  
  5. android:layout_alignParentLeft="true"  
  6. android:orientation="horizontal"  
  7. android:gravity="center" >  
  8.   
  9. <TextView  
  10. android:id="@+id/news_tv1"  
  11. android:layout_width="wrap_content"  
  12. android:layout_height="wrap_content"  
  13. android:layout_gravity="bottom"  
  14. android:layout_weight="1"  
  15. android:drawableTop="@drawable/haed_ren_bg"  
  16. android:gravity="center"  
  17. android:singleLine="true"  
  18. android:text="新闻"  
  19. android:textSize="@dimen/list_cat_size" />  
  20.   
  21. <TextView  
  22. android:drawableTop="@drawable/haed_ren_bg"  
  23. android:id="@+id/news_tv2"  
  24. android:layout_width="wrap_content"  
  25. android:layout_height="wrap_content"  
  26. android:layout_gravity="bottom"  
  27. android:gravity="center"  
  28. android:layout_weight="1"  
  29. android:singleLine="true"  
  30. android:text="政务"  
  31. android:textSize="@dimen/list_cat_size" />  
  32.   
  33. <TextView  
  34. android:drawableTop="@drawable/haed_ren_bg"  
  35. android:id="@+id/news_tv3"  
  36. android:layout_width="wrap_content"  
  37. android:layout_height="wrap_content"  
  38. android:layout_gravity="bottom"  
  39. android:gravity="center"  
  40. android:layout_weight="1"  
  41. android:singleLine="true"  
  42. android:text="社区"  
  43. android:textSize="@dimen/list_cat_size" />  
  44.   
  45. <TextView  
  46. android:drawableTop="@drawable/haed_ren_bg"  
  47. android:id="@+id/news_tv4"  
  48. android:layout_width="wrap_content"  
  49. android:layout_height="wrap_content"  
  50. android:layout_gravity="bottom"  
  51. android:gravity="center"  
  52. android:layout_weight="1"  
  53. android:singleLine="true"  
  54. android:text="微信"  
  55. android:textSize="@dimen/list_cat_size" />  
  56.   
  57. </LinearLayout>  

分析:

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

我们看到控件TextView的内容“新闻、政务、社区、微信”都默认左边对齐,所以可以判断gravity用于设置控件内容相对于当前控件的位置。

layout_gravity:这个属性设置的位置的“参照物”不同,达到的效果是相对于当前控件的父控件上下左右或居中的位置,同样,如果我们在上面的布局文件中去掉layout_gravity属性,保留gravity属性,看看效果如下:

gravity和layout_gravity区别

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

gravity和layout_gravity区别

如果将layout_gravity属性改为bottom,效果如下:
gravity和layout_gravity区别

总结:

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

当前文章价值5.43元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/488.html ,谢谢支持!

资源分享

分类:Android 标签:,
Map接口集合方法解析 Map接口集合方法解析
module导入Android Studio的两种方式,你用了吧? module导入Android Studio的两
LayoutParams通知父容器childView被放置在哪里 LayoutParams通知父容器childV
Genymotion-eclipse-plugin插件安装 Genymotion-eclipse-plugin插件