当前位置: 首页 > 工具软件 > Gravity > 使用案例 >

Android布局中gravity、layout_gravity与layout_centerHorizontal属性区别介绍

越嘉树
2023-12-01

gravity使用区分

gravity:控制控件内文字的对齐方式LinearLayout、RelativeLayout均生效

gravity是设置自身内部元素的对齐方式。比如一个TextView,则是设置内部文字的对齐方式。如果是ViewGroup组件如LinearLayout或RelativeLayout的话,则为设置它内部view组件的对齐方式。


layout_gravity:控件自身相当于父容器的对齐方式

layout_gravityLinearLayout的一种控件对齐方式,可以把值设置成下列值:

center_vertical(垂直居中)、center_horizontal(水平居中)、center

比如:一个TextView设置layout_gravity属性,则表示这TextView相对于父容器的对齐方式。


layout_centerHorizontal:控件自身相当于父容器的对齐方式

  1. layout_centerHorizontalRelativeLayout相对布局的属性
  2. 若设置为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固定长度后也就可以实现水平居中效果了


gravity属性设置

ViewGroup LinearLayout.LayoutParams.gravity 属性和View的setGravity()属性的区别:

  • ViewGroup LinearLayout.LayoutParams.gravity属性等同于XML布局中android:gravity属性是对该ViewGroup中内容的限定。
  • ViewsetGravity()属性等同于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)
 类似资料: