zoukankan      html  css  js  c++  java
  • Android gravity和layout_gravity的区别

    一、gravity和layout_gravity相同处

        两者都是设置对齐方式的属性。内部的属性值相同。

    根据英文意思也能理解其中的意思。如center_horizontal表示在水平方向上的位置为中间。

     二、gravity和layout_gravity的不同处

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

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

    具体参考如下

    1、gravity效果

    ①TextView

      【代码】

    1 <TextView
    2         android:text="这是一个TextView"
    3         android:layout_width="200dp"
    4         android:layout_height="200dp"
    5         android:gravity="center"
    6         android:background="#ff0"
    7         />

    【提示】这里方便观察,我们给TextView设置了一个backGround背景颜色。设置了固定的宽度

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

    【效果】

    ②LinearLayout

    【代码】

     1     <LinearLayout
     2         android:layout_width="match_parent"
     3         android:layout_height="match_parent"
     4         android:gravity="center"
     5         android:background="#f00"
     6         >
     7         <TextView
     8             android:text="TextView在这里"
     9             android:layout_width="200dp"
    10             android:layout_height="200dp"
    11             android:background="#ff0"
    12             />
    13     </LinearLayout>

    【提示】此时外部viewGroup类组件设置gravity为center,内部组件TextView在外部LinearLayout的中间。TextView没有设置gravity属性,则文字在开始位置

    【效果】

    2、layout_gravity效果

      对于layout_gravity不是什么情况下都能设置的属性(如RelativeLayout),而且在不同的viewGroup中产生的效果也会不同(如LinearLayout)。

    具体实例如下

     ①LinearLayout

     1 <LinearLayout
     2         android:layout_width="match_parent"
     3         android:layout_height="match_parent"
     4         android:background="#f00"
     5         android:orientation="horizontal">
     6         <TextView
     7             android:text="TextView在这里"
     8             android:layout_width="200dp"
     9             android:layout_height="200dp"
    10             android:background="#ff0"
    11             android:layout_gravity="center"
    12             />
    13     </LinearLayout>

    【效果】

    【提示】此时layout_gravity的center值,并没有让TextVieW在LinearLayout的中间,这和LinearLayout的orientation的定位方向有关。

    当设置为horizontal时,LinearLayout中的组件时按照横着排列,当设置ayout_gravity属性为center值时,组件就在垂直方向处于中间位置。同理,当设置为vertical时,效果如下

    ②FrameLayout(帧布局)

    【代码】

     1     <FrameLayout
     2         android:layout_width="match_parent"
     3         android:layout_height="match_parent"
     4         android:background="#f00">
     5         <TextView
     6             android:text="TextView在这里"
     7             android:layout_width="200dp"
     8             android:layout_height="200dp"
     9             android:background="#ff0"
    10             android:layout_gravity="center"
    11             />
    12     </FrameLayout>

    【效果】

  • 相关阅读:
    kubernetes部署Ingress Controller创建证书
    污点和容忍度
    Kubernetes部署coredns
    python中私有属性和私有方法
    类的约束
    reactjs 入门
    angularjs ngTable -Custom filter template-calendar
    sql 中条件in参数问题
    详解 nginx location ~ .*.(js|css)?$ 什么意思?
    CentOS 7.2.1511编译安装Nginx1.10.1+MySQL5.7.14+PHP7.0.11
  • 原文地址:https://www.cnblogs.com/xqz0618/p/gravity.html
Copyright © 2011-2022 走看看