zoukankan      html  css  js  c++  java
  • 【整理】Android中的gravity和layout_gravity区别


        

    【背景】

    在Android中,想要设置个按钮的水平对齐,都累死了:

    【已解决】ADT中已设置TableLayout布局的情况下如何设置按钮居中对齐    所以现在有必要搞清楚,到底gravity和layout_gravity到底有啥区别。


    1.参考:

    Android – gravity and layout_gravity

    Android中gravity与layout_gravity的区别

    中的解释,可以总结为:

      • android:gravity : 表示当前View,即控件,内部的东西的,对齐方式
        • TableRow内部的Button
          • 右对齐:
            • 代码:
    <TableRow
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:gravity="right">
    
        <Button
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent"
            android:gravity="center"
            android:layout_gravity="center"
            android:onClick="preformDownload"
            android:text="@string/btn_download" />
    </TableRow>
            • 效果:
            • tablerow inside button right
          • 居中对齐:
            • 代码:
     	<TableRow
    	    android:layout_width="fill_parent" 
    	    android:layout_height="fill_parent"
    	    android:gravity="center">
    
     	    <Button
     	        android:layout_width="fill_parent" 
     	        android:layout_height="fill_parent"
     	        android:gravity="center"
     	        android:layout_gravity="center"
     	        android:onClick="preformDownload"
     	        android:text="@string/btn_download" />
     	</TableRow>
          • 效果:
            • tablerow inside button center
        • Button内部的文字(Text):
          • 垂直方向:顶端Top
            • 代码:
     	    <Button
     	        android:layout_width="fill_parent"
     	        android:layout_height="fill_parent"
     	        android:layout_gravity="bottom"
     	        android:gravity="top"
     	        android:onClick="preformDownload"
     	        android:text="@string/btn_download" />
            • 效果:
              • button inside text top
          • 垂直方向:居中对齐:
            • 代码:
     	    <Button
     	        android:layout_width="fill_parent"
     	        android:layout_height="fill_parent"
     	        android:layout_gravity="bottom"
     	        android:gravity="center_vertical"
     	        android:onClick="preformDownload"
     	        android:text="@string/btn_download" />
            • 效果:
              • button inside text center vertical
      • android:layout_gravity: 表示,当前View,即控件,本身,(在父一级的控件所分配的显示范围内)的对齐方式
        • EditText(在父一级的LinearLayout内)
          • EditText居中对齐:
            • 代码:
     	<LinearLayout 
    	    xmlns:android="http://schemas.android.com/apk/res/android" 
    	    android:orientation="vertical" 
    	    android:layout_width="fill_parent" 
    	    android:layout_height="fill_parent"> 
    
    	    <EditText
    	        android:layout_width="wrap_content"
    	        android:layout_height="wrap_content"
    	        android:layout_gravity="center"
    	        android:gravity="center"
    	        android:text="one" />
    
    	</LinearLayout>
            • 效果:
              • edittext center inside linelayout
          • EditText右对齐:
            • 代码:
     	<LinearLayout 
    	    xmlns:android="http://schemas.android.com/apk/res/android" 
    	    android:orientation="vertical" 
    	    android:layout_width="fill_parent" 
    	    android:layout_height="fill_parent"> 
    
    	    <EditText
    	        android:layout_width="wrap_content"
    	        android:layout_height="wrap_content"
    	        android:layout_gravity="right"
    	        android:gravity="center"
    	        android:text="one" />
    
    	</LinearLayout>
          • 效果:
            • edittext right inside linelayout

    【总结】

    • android:gravity : 表示当前View,即控件,内部的东西的,对齐方式
      • 常见的是:
        • TableRow中的Button
        • EditText(内部)的文字
        • Button(内部)的文字
    • android:layout_gravity: 表示当前View,即控件本身在父一级内的(即父一级控件所给当前子控件所分配的显示范围内)的对齐方式
      • 常见的是:
        • 当前EditText(在父一级LineLayout所分配给其的显示范围内)的对齐方式
        • 当前的Button(在父一级TableRow所分配给其的显示范围内)的对齐方式 ->此处需要注意的是,很多时候,改变Button内的layout_gravity,常看不到改动的效果,是因为其显示范围和位置,已经由父一级的TableRow的gravity决定了。

    总之,拿着代码,多试试,就容易理解了。

  • 相关阅读:
    41. 缺失的第一个正数
    40. 组合总和 II
    39. 组合总和
    38. 外观数列
    35. 搜索插入位置
    设计模式(1)单例模式
    一篇文章彻底搞懂Java的大Class到底是什么
    Vue实现一个MarkDown编辑器
    7 二分搜索树的原理与Java源码实现
    6 手写Java LinkedHashMap 核心源码
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/4474920.html
Copyright © 2011-2022 走看看