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
android:text="哈哈哈"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
②结果显示居中
<TextView
android:text="哇哇哇"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"/>
解析:设置的TextView的layout_width为match_parent
,而layout_centerHorizontal设置为true
,表示将TextView位于父控件的中间,而父控件的宽度同样是match_parent
(一般都默认设置为match_parent
),这样就导致该TextView已经水平居中了,但是TextView中的文字没有居中,当我们把TextView固定长度后也就可以实现水平居中效果了
ViewGroup LinearLayout.LayoutParams.gravity
属性和View的setGravity()
属性的区别:
.gravity
属性等同于XML布局中android:gravity
属性是对该ViewGroup中内容的限定。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)