android:gravity / android:layout_gravity区别:

android:gravity 是设置该view里面的内容相对于该view的位置,例如设置button里面的text相对于view的靠左,居中等位置。(也可以在Layout布局属性中添加,设置Layout中组件的位置)

android:layout_gravity 是用来设置该view相对与父view的位置,例如设置button在layout里面的相对位置:屏幕居中,水平居中等。 即android:gravity用于设置View中内容相对于View组件的对齐方式,而android:layout_gravity用于设置View组件相对于Container的对齐方式。 说的再直白点,就是android:gravity只对该组件内的东西有效,android:layout_gravity只对组件自身有效

android:layout_gravity 只在 LinearLayout 和 FrameLayout 中有效:

①对于 LinearLayout :

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

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

②对于 FrameLayout : 任意android:layout_gravity属性都有效,可以非常方便实现对组件的布局。 看个例子: 整个布局使用了LinearLayout,其中在LinearLayout中添加了android:gravity="center_vertical"属性,使得Button位于屏幕的水平中间。 因为LinearLayout的android:orientation="vertical",所以Button只能使用android:layout_gravity的属性只有三个,即:left,right,center_horizontal,这里使用了android:layout_gravity="right",使得Button靠右边 然后看Button中的text,Button的width我故意加长了,这样可以清楚看出文字是居于Button的底部和右边,所以Button中android:gravity="right|bottom", 属性是可以多选的,用“|”分开。 附上布局文件:
<LinearLayout     xmlns:android ="http://schemas.android.com/apk/res/android"    xmlns:tools= "http://schemas.android.com/tools"    android:orientation="vertical"    android:layout_width= "match_parent"    android:layout_height= "match_parent"    android:gravity="center_vertical" >        <Button         android:layout_width="200px"            android:layout_height="wrap_content"           android:text="内容"            android:gravity="right|bottom"        android:layout_gravity="right"/></LinearLayout>

通过Java代码来设置组件的位置

setGravity()对应android:gravity

gravity属性对应android:layout_gravity

下面代码实现同上面布局文件实现的效果

 1 LinearLayout layout = new LinearLayout(this); 2         layout.setOrientation(LinearLayout.VERTICAL);        //LinearLayout必须设置方向,否则无法看到效果 3          4         Button button = new Button(this); 5         button.setText("内容"); 6         button.setGravity(Gravity.BOTTOM|Gravity.RIGHT);    //设置Button中的文字位置,相当于Button布局属性中的android:gravity="right|bottom" 7         LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT); 8                                                             //故意加长button长度,这里200的单位是px 9         buttonParams.gravity = Gravity.RIGHT;                  //相当于Button布局属性中的android:layout_gravity=right10         11         layout.addView(button, buttonParams);               //相当于这两句      button.setLayoutParams(buttonParams);12                                                             //                layout.addView(button);13         14         layout.setGravity(Gravity.CENTER_VERTICAL);            //设置Button的位置,相当于LinearLayout布局属性中的android:gravity="center_vertical"15         16         setContentView(layout);

虚拟机运行效果图,跟上面布局文件实现是一样的

参考: 1.  http://blog.csdn.net/feng88724/article/details/6333809 2.  http://android.blog.51cto.com/268543/632690 3.  http://www.cnblogs.com/ghj1976/archive/2011/04/26/2029535.html

更多相关文章

  1. Android属性gravity与layout_gravity的区别
  2. Android中RelativeLayout各个属性 android:layout_alignParentLe
  3. Android中如何设置RadioButton在文字的右边,图标在左边
  4. RelativeLayout布局用到的主要属性
  5. android之inputType属性
  6. android 控件位置常用布局
  7. Android中的Intent和Intent-filter总结
  8. [Android] 设置控件是否可见
  9. Android(安卓)TextView属性详解

随机推荐

  1. Android NDK开发之Android.mk文件
  2. Android(安卓)progressBar代码设置进度条
  3. Android 单独抽取 WebRtc-AGC(音频增益) 模
  4. 【转】Android Makefile中是 如何识别 TA
  5. 安卓开发入门学习笔记
  6. Android知识体系总结之Android部分View绘
  7. 关于 android RIL 调试
  8. Android中ExpandableListView控件基本使
  9. android ApiDemo学习(一)service总结
  10. android adb driver can not work on WIN