gravity:控制控件内文字的对齐方式,LinearLayout、RelativeLayout均生效
gravity是设置自身内部元素的对齐方式。比如一个TextView,则是设置内部文字的对齐方式。如果是ViewGroup组件如LinearLayout或RelativeLayout的话,则为设置它内部view组件的对齐方式。
layout_gravity:控件自身相当于父容器的对齐方式
layout_gravity是LinearLayout的一种控件对齐方式,可以把值设置成下列值:
center_vertical(垂直居中)、center_horizontal(水平居中)、center等
比如:一个TextView设置layout_gravity属性,则表示这TextView相对于父容器的对齐方式。
layout_centerHorizontal:控件自身相当于父容器的对齐方式
- layout_centerHorizontal是RelativeLayout相对布局的属性
- 若设置为true,就将该控件设置在相对于父控件水平居中的位置 android:layout_centerHorizontal="true"
使用实例
使用控件时应注意父控件或相对控件的width与height的属性,再进一步分析其他控件的具体属性设置
例:若想要使TextView居中
①结果显示不居中
②结果显示居中
解析:设置的TextView的layout_width为match_parent,而layout_centerHorizontal设置为true,表示将TextView位于父控件的中间,而父控件的宽度同样是match_parent(一般都默认设置为match_parent),这样就导致该TextView已经水平居中了,但是TextView中的文字没有居中,当我们把TextView固定长度后也就可以实现水平居中效果了
gravity属性设置
ViewGroup LinearLayout.LayoutParams.gravity 属性和View的setGravity()属性的区别:
- ViewGroup LinearLayout.LayoutParams.gravity属性等同于XML布局中android:gravity属性是对该ViewGroup中内容的限定。
- View的setGravity()属性等同于XML布局中android:layout_gravity,是用来设置该view相对与父view 的位置。
val button = Button(this)
button.text = "Android"
val params: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)
// 此处相当于XML布局文件中的android:layout_gravity属性
params.gravity = Gravity.RIGHT
button.layoutParams = lp
// 此处相当于XML布局文件中的android:gravity属性
button.gravity = Gravity.CENTER
val linear = LinearLayout(this)
// 注意,对于LinearLayout布局来说,设置横向还是纵向是必须的!否则就看不到效果了。
linear.orientation = LinearLayout.VERTICAL
linear.addView(button)
setContentView(linear)



