Android布局中gravity与layout_gravity属性说明

目录
  • gravity与layout_gravity属性
  • 1、gravity
  • 2、layout_gravity属性
  • 3、相对布局中的layout_center属性
  • 总结

gravity与layout_gravity属性

在android布局中,我们经常会用到“重心”-gravity这个属性。

但是gravity有不同的类型:

  • gravity
  • layout_gravity
  • 相对布局中的layout_center等属性

今天我们就来具体说说。

1、gravity

gravity属性是对控件自身内容对自己的限定,拿布局文件test.xml举例来说:

此时在TextView中并没有对gravity属性进行操作,文字内容如上图。

接下来,我们继续设置TextView的gravity属性,观察效果:

2、layout_gravity属性

与gravity属性不同的是,layout_gravity属性是用来设置该View相对与父View的位置,

具体情况就个人判断有下面这4种情况:

另外还有一种在父布局横或纵设置wrap_content时,如果在该方向设置layout_gravity属性。

我直接在一个布局中,把这5种情况列出来,下面是我的布局文件代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.primexiao.myapplication.MainActivity"
    >
//第4种情况
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="#00f0f0"
    android:orientation="vertical">
        <TextView
            android:id="@+id/tv1"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_centerInParent="true"
            android:text="我是测试内容"
            android:background="#000000"
            android:layout_gravity="center_horizontal"
            android:textColor="#ffffff"
            android:layout_width="100dp"
            android:layout_height="100dp" />
</LinearLayout>
//第1种情况
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#00ff00"
        android:orientation="vertical">
        <TextView
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_centerInParent="true"
            android:text="我是测试内容"
            android:background="#000000"
            android:textColor="#ffffff"
            android:layout_gravity="center_vertical"
            android:layout_width="100dp"
            android:layout_height="100dp" />
    </LinearLayout>
    //第3种情况
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#00f0f0"
        android:orientation="horizontal">
        <TextView
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_centerInParent="true"
            android:text="我是测试内容"
            android:background="#000000"
            android:layout_gravity="center_vertical"
            android:textColor="#ffffff"
            android:layout_width="100dp"
            android:layout_height="100dp" />
    </LinearLayout>
    //第2种情况
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#ff0000"
        android:orientation="horizontal">
        <TextView
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_centerInParent="true"
            android:text="我是测试内容"
            android:background="#000000"
            android:layout_gravity="center_horizontal"
            android:textColor="#ffffff"
            android:layout_width="100dp"
            android:layout_height="100dp" />
    </LinearLayout>
    //第5种情况
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#fff000"
        android:orientation="horizontal">
        <TextView
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_centerInParent="true"
            android:text="我是测试内容"
            android:background="#000000"
            android:layout_gravity="center_horizontal"
            android:textColor="#ffffff"
            android:layout_width="100dp"
            android:layout_height="100dp" />
    </LinearLayout>
</LinearLayout>

效果图如下:

我们可以看到第1和第2种情况下,layout_gravity这一属性根本没有起到作用,个人看法是子控件如果选择横或纵居中,这种属性声明是不能和父布局的排列方式相冲的,这个坑我先替你们踩着:D。

3、相对布局中的layout_center属性

之前遇到过这么一个问题,在RelativeLayout中设置layount_gravity属性,发现并不能实现居中效果,并且layout_gravity也是手动输入,期间并没有智能提示。

后来发现相对布局中,有layout_centerX这么一个属性,让我们来试一下:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Android中gravity、layout_gravity、padding、margin的区别小结

    1.gravity与layout_gravity的区别 gravity 属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.该属性就干了这个. layout_gravity 是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左 靠右等位置就可以通过该属性设置. 这样就解释了,有什么我们弄个最外布局,然后里面包了几个布局,如果要使这几个布局都靠底,就可

  • Android中gravity与layout_gravity的使用区别分析

    android:gravity:设置的是控件自身上面的内容位置 android:layout_gravity:设置控件本身相对于父控件的显示位置. 看下如下代码段 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?><!-- android:gravity设置了按钮上面的文字的显示位置,而android:layout_gravity设置了按钮在布局中的显示位置.--><LinearLayou

  • Android布局控件之常用linearlayout布局

    LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失.因此一个垂直列表的每一行只会有一个widget或者是container,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子控件的高度加上边框高度).LinearLayout保持其所包含的widget或者是container之间的间隔以及互相对齐(相对一个控件的右对齐.中间对齐或者左对齐). xml属性

  • android 布局属性详解

    android:id 为控件指定相应的ID android:text 指定控件的文本,置尽量使用strings.xml android:grivity 指定控件的基本位置 ,比如举重,居右, android:padding 指定控件的内边距,控件当中的内容 android:singleLine 如果设置为真的话,则将控件的内容在同一行当中显示 android:layout_above 将该空间的底部至于给定ID的空间之上 android:layout_below: 将该控件的顶部至于给定ID的控

  • Android布局中gravity与layout_gravity属性说明

    目录 gravity与layout_gravity属性 1.gravity 2.layout_gravity属性 3.相对布局中的layout_center属性 总结 gravity与layout_gravity属性 在android布局中,我们经常会用到“重心”-gravity这个属性. 但是gravity有不同的类型: gravity layout_gravity 相对布局中的layout_center等属性 今天我们就来具体说说. 1.gravity gravity属性是对控件自身内容对自

  • Android 布局中的android:onClick的使用方法总结

    Android 布局中的android:onClick的使用方法总结 Android布局中的 android:onClick="..."属性设置点击时从上下文中调用指定的方法.该属性值和要调用的方法名称完全一致.一般在Activity定义符合如下参数和返回值的函数并将方法名字符串指定为该属性值即可: public void onClickButton(View view) android:onClick="onClickButton" 功能类似于Button的监听器

  • Android开发中ImageView的scaletype属性用法分析

    本文实例讲述了Android开发中ImageView的scaletype属性用法.分享给大家供大家参考,具体如下: ImageView的属性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType).android:scaleType是控制图片如何 resized/moved来匹对ImageView的size.ImageView.ScaleType / android:scaleType值的意义区别: CENTER /cente

  • 基于android布局中的常用占位符介绍

    大家在做布局文件是肯定会遇到过下面的这种情况 填充出现问题,所以需要用到占位符规范填充 汉字常用占位符: <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是测试:" android:textSize="22sp" /> <TextView android:layo

  • Android App中使用LinearLayout进行居中布局的实例讲解

    要想让您的控件水平居中或垂直居中其实很简单,只要在控件的上一级中设置[android:gravity="center"]属性即可 如: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="center" android:backgro

  • Android 布局文件Layout XML属性

    Layout对于迅速的搭建界面和提高界面在不同分辨率的屏幕上的适应性具有很大的作用.这里简要介绍Android的Layout和研究 一下它的实现. Android有Layout:FrameLayout,LinearLayout,TableLayout,RelativeLayout,AbsoluteLayout. 放入Layout中进行排布的View的XML属性: 几种Layout中Item所共有的XML属性:  (1)layout_width  (2)layout_height 注: (1)和(

  • Android应用中使用TabHost组件继承TabActivity的布局方法

    继承TabActivity并以activity布局 先查看下最终效果图: 再看下代码结构: 其中black.gif顾名思义就是一个黑背景图片,grey.gif就是一张灰色的背景图片 然后直接上代码: ArtistActivity.java package cn.com.tagview; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class Artist

  • 详解Android应用中使用TabHost组件进行布局的基本方法

    TabHost布局文件 我们先来了解一下布局文件的基本内容: 1. 根标签及id 设置Android自带id : XML布局文件中, 可以使用 标签设置, 其中的id 需要引用 android的自带id : android:id=@android:id/tabhost ; getHost()获取前提 : 设置了该id之后, 在Activity界面可以使用 getHost(), 获取这个TabHost 视图对象; 示例 : 复制代码 代码如下: <tabhost android:id="@a

随机推荐