gravity 和layout_gravity 的使用

本文深入探讨了在Android应用开发中如何通过layout_gravity和gravity属性精确控制组件的位置,包括它们在不同布局方向下的表现差异。通过具体代码示例展示了如何设置按钮在垂直和水平布局中的显示位置,并解释了缺少关键属性导致布局效果变化的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单使用一下搜索工具,我们就不难找到下面这样的答案:

layout_gravity 表示组件自身在父组件中的位置
gravity            
表示组件的子组件在组件中的位置

1.    <?xml version="1.0" encoding="utf-8"?>

2.    <!-- android:gravity设置了按钮上面的文字的显示位置,而android:layout_gravity设置了按钮在布局中的显示位置。 –>

3.    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

4.            android:orientation="vertical"

5.            android:layout_width="fill_parent"

6.            android:layout_height="wrap_content">

7.            <Button android:layout_width="250dip"

8.                    android:gravity="right"

9.                    android:layout_height="wrap_content"

10.                  android:text="我居右显示"

11.                  android:layout_gravity="right" />;

12.  </LinearLayout>

复制代码

这段代码的展现效果如下:!

 

 

然后我们再看下面这段代码:

1.    <?xml version="1.0" encoding="utf-8"?>

2.    <!-- android:gravity设置了按钮上面的文字的显示位置,而android:layout_gravity设置了按钮在布局中的显示位置。 –>

3.    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

4.            android:layout_width="fill_parent"

5.            android:layout_height="wrap_content">

6.            <Button android:layout_width="250dip"

7.                    android:gravity="right"

8.                    android:layout_height="wrap_content"

9.                    android:text="我居右显示"

10.                  android:layout_gravity="right" />

11.  </LinearLayout>

复制代码

这段代码我们一样设置了android:layout_gravity="right",但是它的展现效果却是下面这样的:

 

 


细心一点的同学就会发现,下面的这段代码,最外层的LinearLayout少了这样一个属性:android rientation="vertical"
不错,正是缺少了这个属性才导致了android:layout_gravity="right"的失效。
因为LinearLayout默认的是:android rientation="horizontal" "

也就是说,只有在作为父layout的LinearLayout是android rientation="vertical" 的时候,android:layout_gravity="right"才会生效。

 

看完上面的内容,有同学也许还会发现,当外层的LinearLayoutandroid rientation="vertical" 的时候,android:layout_gravity="bottom"失效了

看到这里相信大家都明白了

下面我们还需要做一个简单的总结:
当作为父layout的LinearLayout的属性为android rientation="vertical" 的时候,android:layout_gravity="?"这里设为横向的时候才能生效。比如:left,right,center_horizontal等

当作为父layout的LinearLayout的属性为android rientation="horizental" 的时候,android:layout_gravity="?"这里设为纵向的时候才能生效。比如:top,bottom,center_vertical等;

有一个比较特殊的是center,不管是横向还是纵向的时候,它总有一个方向起作用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值