Android中 layout_gravity和gravity的区别

简介: Android中 layout_gravity和gravity的区别

前言:gravity是设置自身内部元素的对齐方式。

一、比如一个TextView,则是设置内部文字的对齐方式。如果是ViewGroup组件如LinearLayout的话,则为设置它内部view组件的对齐方式。

1.gravity=“center”

在没有添加gravity="center"之前

代码和效果图如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="200sp"
        android:layout_height="200sp"
        android:text="我是一个textView"
        android:background="@color/teal_200"
        />
</LinearLayout>

在添加gravity="center"之后:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="200sp"
        android:layout_height="200sp"
        android:text="我是一个textView"
        android:background="@color/teal_200"
        android:gravity="center"
        />
</LinearLayout>

效果如下:

我们看见TextView里面的元素已经居中了,这是在TextView空间里面加上gravity=“center”

注意:如果要用gravity属性,此组件的layout_width和layout_height不能设置为wrap_content。此时设置的gravity属性没有效果,因为组件包裹着内容,无论设置什么,也都不能有改变

如果我们在组件Linerlayout中,添加gravity=“center”

代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    >
    <TextView
        android:layout_width="200sp"
        android:layout_height="200sp"
        android:text="我是一个textView"
        android:background="@color/teal_200"
        android:gravity="center"
        />
</LinearLayout>

效果图如下:

我们会看到,这个控件在组件中居中。

二、layout_gravity是设置自身相当于父容器的对齐方式。比如,一个TextView设置layout_gravity属性,则表示这个TextView相对于父容器的对齐方式。

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView
        android:layout_width="200sp"
        android:layout_height="200sp"
        android:text="我是一个textView"
        android:background="@color/teal_200"
        android:layout_gravity="center"
        />
</LinearLayout>

效果图如下:

这个时候我们发现,TextView并没有在屏幕内居中,这个是跟LinearLayout的定位方向有关。

当orientation=“horizontal”时,这个时候的布局方向为水平布局,组件按照横着排列,组件就在垂直方向处于中间位置,这个时候效果为:

当orientation=“vertical”时,组件就在水平方向处于居中位置,效果图如下:

以上就是layout_gravity和gravity在LinearLayout线性布局中的区别。

共勉:站在巨人的肩上是为了超越巨人。


目录
相关文章
|
2月前
|
安全 Android开发 数据安全/隐私保护
请说明鸿蒙操作系统与其他操作系统(如Android和iOS)的主要区别。
请说明鸿蒙操作系统与其他操作系统(如Android和iOS)的主要区别。
89 1
|
2月前
|
Android开发
Android基础知识:请解释Service是什么,它与IntentService的区别是什么?
Android基础知识:请解释Service是什么,它与IntentService的区别是什么?
63 0
|
10月前
|
编解码 物联网 开发工具
Android平台内网RTSP网关和轻量级RTSP服务的区别和联系
我们在对接轻量级RTSP服务的时候,遇到客户这样的使用场景:客户是用于车载自组网环境,确保多辆车之间可以相互看到对方的实时视频,以期可以了解到前方路况等关注的信息。
115 0
|
2月前
|
API 开发工具 Android开发
iOS 和 Android 平台的开发有哪些主要区别?
iOS与Android开发区别:iOS用Objective-C/Swift,App Store唯一下载渠道;Android用Java/Kotlin,多商店发布(如Google Play、华为市场)。设计上,iOS简洁一致,Android灵活可定制。开发工具,iOS用Xcode,Android用Android Studio。硬件和系统多样性,iOS统一,Android复杂。权限管理、审核流程及API各有特点,开发者需依据目标平台特性进行选择。
77 3
|
2月前
|
XML 存储 编解码
android 目录结构中 drawable(hdpi,ldpi,mdpi) 的区别
android 目录结构中 drawable(hdpi,ldpi,mdpi) 的区别
34 1
|
4天前
|
开发工具 Android开发
技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例
技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例
|
2月前
|
数据可视化 Android开发 容器
Android UI设计: 请解释LinearLayout、RelativeLayout和ConstraintLayout的区别。
Android UI设计: 请解释LinearLayout、RelativeLayout和ConstraintLayout的区别。
133 5
|
2月前
|
Java 开发工具 Android开发
鸿蒙HarmonyOS 与 Android 的NDK有什么区别?
鸿蒙(HarmonyOS)和Android的NDK(Native Development Kit)是两个不同的概念,它们在设计理念、架构、开发方式和目标平台等方面存在着一些显著的不同。
54 0
|
2月前
|
Android开发
Android Makefile中inherit-product函数和include的区别
Android Makefile中inherit-product函数和include的区别
26 0
|
2月前
|
Android开发
Android基础知识:什么是Fragment?与Activity的区别是什么?
Android基础知识:什么是Fragment?与Activity的区别是什么?
564 54