摘要:
我经常分不清楚gravity和layout_gravity到底怎么用,所以在布局的时候展示不出想要的效果,今天刚好做了一个案例,趁此弄明白了gravity和layout_gravity的区别。下面先看看效果图:
在这个案例里,LinearLayout父控件中放置四个TextView,在TextView中使用gravity和layout_gravity设置该TextView的位置,显示的图标使用了drawableTop属性,然后添加图片资源即可,最后达到了上图的效果。
布局资源的源码:
- <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>
分析:
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属性。
你可能感兴趣的文章
转载请注明出处: https://www.teachcourse.cn/488.html ,谢谢支持!