android gravity 属性

来源:互联网 发布:java正则表达式中括号 编辑:程序博客网 时间:2024/05/16 18:54
效果图1:
 
布局文件xml内容如下:
 
[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.    android:layout_width="fill_parent"  
  4.    android:layout_height="fill_parent"  
  5.    android:orientation="vertical">  
  6.      
  7.    <TextView android:id="@+id/TextView01"  
  8.         android:layout_width="fill_parent"  
  9.         android:layout_height="35dp"  
  10.         android:text="top"  
  11.         android:gravity="top"  
  12.         android:textColor="#ffffff"  
  13.         android:background="#ff0000"  
  14.         android:layout_margin="1px"/>  
  15.           
  16.    <TextView android:id="@+id/TextView02"  
  17.         android:layout_width="fill_parent"  
  18.         android:layout_height="35dp"  
  19.         android:text="bottom"  
  20.         android:gravity="bottom"  
  21.         android:textColor="#ffffff"  
  22.         android:background="#ff0000"  
  23.         android:layout_margin="1px"/>  
  24.           
  25.    <TextView android:id="@+id/TextView03"  
  26.         android:layout_width="fill_parent"  
  27.         android:layout_height="35dp"  
  28.         android:text="left"  
  29.         android:gravity="left"  
  30.         android:textColor="#ffffff"  
  31.         android:background="#ff0000"  
  32.         android:layout_margin="1px"/>  
  33.           
  34.    <TextView android:id="@+id/TextView04"  
  35.         android:layout_width="fill_parent"  
  36.         android:layout_height="35dp"  
  37.         android:text="right"  
  38.         android:gravity="right"  
  39.         android:textColor="#ffffff"  
  40.         android:background="#ff0000"  
  41.         android:layout_margin="1px"/>  
  42.           
  43.    <TextView android:id="@+id/TextView05"  
  44.         android:layout_width="fill_parent"  
  45.         android:layout_height="35dp"  
  46.         android:text="center_vertical"  
  47.         android:gravity="center_vertical"  
  48.         android:textColor="#ffffff"  
  49.         android:background="#ff0000"  
  50.         android:layout_margin="1px"/>  
  51.           
  52.    <TextView android:id="@+id/TextView06"  
  53.         android:layout_width="fill_parent"  
  54.         android:layout_height="35dp"  
  55.         android:text="fill_vertical"  
  56.         android:gravity="fill_vertical"  
  57.         android:textColor="#ffffff"  
  58.         android:background="#ff0000"  
  59.         android:layout_margin="1px"/>  
  60.           
  61.    <TextView android:id="@+id/TextView07"  
  62.         android:layout_width="fill_parent"  
  63.         android:layout_height="35dp"  
  64.         android:text="center_horizontal"  
  65.         android:gravity="center_horizontal"  
  66.         android:textColor="#ffffff"  
  67.         android:background="#ff0000"  
  68.         android:layout_margin="1px"/>  
  69.           
  70.    <TextView android:id="@+id/TextView08"  
  71.         android:layout_width="fill_parent"  
  72.         android:layout_height="35dp"  
  73.         android:text="fill_horizontal"  
  74.         android:gravity="fill_horizontal"  
  75.         android:textColor="#ffffff"  
  76.         android:background="#ff0000"  
  77.         android:layout_margin="1px"/>                                                          
  78.   
  79.    <TextView android:id="@+id/TextView09"  
  80.         android:layout_width="fill_parent"  
  81.         android:layout_height="35dp"  
  82.         android:text="center"  
  83.         android:gravity="center"  
  84.         android:textColor="#ffffff"  
  85.         android:background="#ff0000"  
  86.         android:layout_margin="1px"/>  
  87.           
  88.    <TextView android:id="@+id/TextView10"  
  89.         android:layout_width="fill_parent"  
  90.         android:layout_height="35dp"  
  91.         android:text="fill"  
  92.         android:gravity="fill"  
  93.         android:textColor="#ffffff"  
  94.         android:background="#ff0000"  
  95.         android:layout_margin="1px"/>  
  96.           
  97.    <TextView android:id="@+id/TextView11"  
  98.         android:layout_width="fill_parent"  
  99.         android:layout_height="35dp"  
  100.         android:text="clip_vertical"  
  101.         android:gravity="clip_vertical"  
  102.         android:textColor="#ffffff"  
  103.         android:background="#ff0000"  
  104.         android:layout_margin="1px"/>  
  105.           
  106.    <TextView android:id="@+id/TextView12"  
  107.         android:layout_width="fill_parent"  
  108.         android:layout_height="35dp"  
  109.         android:text="clip_horizontal"  
  110.         android:gravity="clip_horizontal"  
  111.         android:textColor="#ffffff"  
  112.         android:background="#ff0000"  
  113.         android:layout_margin="1px"/>  
  114.                                           
  115. </LinearLayout> 



1.首先来看看android:layout_gravity和android:gravity的使用区别。

android:gravity:

这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置。例如,在一个Button按钮控件中设置如下两个属性,

android:gravity="left"和android:text="提交",这时Button上的文字“提交”将会位于Button的左部。


android:layout_gravity:

这个是针对控件本身而言,用来控制该控件在包含该控件的父控件中的位置。同样,当我们在Button按钮控件中设置android:layout_gravity="left"属性时,表示该Button按钮将位于界面的左部。


2.属性值:

这两个属性可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

一个属性可以包含多个值,需用“|”分开。其含义如下:

top将对象放在其容器的顶部,不改变其大小.bottom将对象放在其容器的底部,不改变其大小.left将对象放在其容器的左侧,不改变其大小.right将对象放在其容器的右侧,不改变其大小.center_vertical将对象纵向居中,不改变其大小. 
垂直对齐方式:垂直方向上居中对齐。
fill_vertical必要的时候增加对象的纵向大小,以完全充满其容器. 
垂直方向填充
center_horizontal将对象横向居中,不改变其大小. 
水平对齐方式:水平方向上居中对齐
fill_horizontal必要的时候增加对象的横向大小,以完全充满其容器. 
水平方向填充
center将对象横纵居中,不改变其大小.fill必要的时候增加对象的横纵向大小,以完全充满其容器.clip_vertical

附加选项,用于按照容器的边来剪切对象的顶部和/或底部的内容. 剪切基于其纵向对齐设置:顶部对齐时,剪切底部;底部对齐时剪切顶部;除此之外剪切顶部和底部.

垂直方向裁剪

clip_horizontal

附加选项,用于按照容器的边来剪切对象的左侧和/或右侧的内容. 剪切基于其横向对齐设置:左侧对齐时,剪切右侧;右侧对齐时剪切左侧;除此之外剪切左侧和右侧.

水平方向裁剪


我们主要来看看center_vertical和center_horizontal两个属性值,center_vertical是指将对象在垂直方向上居中对齐,即在从上到下的方向上选择中间的位置放好center_horizontal是指将对象水平方向上居中对齐,即在从左到右的方向上选择中间的位置放好

3.特殊情况

当我们采用LinearLayout布局时,有以下特殊情况需要我们注意:

(1)当 android:orientation="vertical"  时, android:layout_gravity只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。

(2)当 android:orientation="horizontal" 时, android:layout_gravity只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。


下面以一个例子说明:(本例来源于:http://blog.csdn.net/dekunchenivan/article/details/6718678)


  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <TextView    
  8.         android:layout_width="100dip"   
  9.         android:layout_height="100dip"  
  10.         android:layout_gravity="bottom|center_horizontal"  
  11.         android:gravity="center|bottom"  
  12.         android:background="#00FF00"  
  13.         android:text="@string/textview"  
  14.         />  
  15.   
  16.     <Button  
  17.         android:layout_width="100dip"  
  18.         android:layout_height="100dip"  
  19.         android:layout_gravity="bottom|left"  
  20.         android:gravity="left|top"  
  21.         android:background="#FF0000"  
  22.         android:text="@string/button"  
  23.         />  
  24. </LinearLayout>  

其效果如图:  





在TextView中,我们设置了android:layout_gravity="bottom|center_horizontal"  ,但该TextView并没有显示在屏幕的下方正中央,表明只有center_horizontal属性起了作用,这正是因为我们使用了LinearLayout布局,并且其android:orientation="vertical",只有水平方向的设置才会起作用,其他方向则会失效。同样,Button也一样。



0 0
原创粉丝点击