GridLayout: GridLayout使用简介(转)[通俗易懂]

GridLayout: GridLayout使用简介(转)[通俗易懂]Android布局之GridLayout1GridLayout简介GridLayout是Android4.0新提供的网格矩阵形式的布局控件。GridLayout的继承关系如下:java.la

大家好,又见面了,我是你们的朋友全栈君。

Android 布局之GridLayout

 


1 GridLayout简介

GridLayout是Android4.0新提供的网格矩阵形式的布局控件。

GridLayout的继承关系如下:
java.lang.Object
  –> android.view.View
    –> android.view.ViewGroup
      –> android.widget.GridLayout

GridLayout包含的属性如下

android:alignmentMode
属性说明:当设置alignMargins,使视图的外边界之间进行校准。可以取以下值:
alignBounds — 对齐子视图边界。
alignMargins — 对齐子视图边距。

android:columnCount
属性说明:GridLayout的最大列数

android:rowCount
属性说明:GridLayout的最大行数

android:columnOrderPreserved
属性说明: 当设置为true,使列边界显示的顺序和列索引的顺序相同。默认是true。

android:orientation
属性说明:GridLayout中子元素的布局方向。有以下取值:
horizontal — 水平布局。
vertical — 竖直布局。

android:rowOrderPreserved
属性说明: 当设置为true,使行边界显示的顺序和行索引的顺序相同。默认是true。

android:useDefaultMargins
属性说明: 当设置ture,当没有指定视图的布局参数时,告诉GridLayout使用默认的边距。默认值是false。

这些是GridLayout布局本身的属性。

 

 


2 GridLayout子元素属性

上面描述的 GridLayout 的属性,是 GridLayout 布局本身的属性;下面 GridLayout 布局中的元素所支持的属性。GridLayout 布局中的元素的属性,定义在 GridLayout.LayoutParams 中。取值如下:

 

2.1 android:layout_column

属性说明: 显示该空间的列。例如,android:layout_column=”0″,表示在第1列显示该控件;android:layout_column=”1″,表示在第2列显示该控件。

layout文件示例,

GridLayout: GridLayout使用简介(转)[通俗易懂]
GridLayout: GridLayout使用简介(转)[通俗易懂]

复制代码
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:rowCount="2"
    android:columnCount="3" >
  <Button
        android:id="@+id/one"
        android:layout_column="1"
        android:text="1"/>
  <Button
        android:id="@+id/two"
        android:layout_column="0"
        android:text="2"/>
   <Button
        android:id="@+id/three"
        android:text="3"/>
  <Button
        android:id="@+id/devide"
        android:text="/"/>

</GridLayout>
复制代码

对应的显示效果图

GridLayout: GridLayout使用简介(转)[通俗易懂]

layout文件说明
android:orientation=”horizontal” — GridLayout中控件的布局方向是水平布局。
android:rowCount=”2″               — GridLayout最大的行数为2行。
android:columnCount=”3″          — GridLayout最大的列数为3列。
android:layout_column=”1″        — 定义控件one的位于第2列。
android:layout_column=”0″        — 定义该控two件的位于第1列。

 

2.2 android:layout_columnSpan

属性说明: 该控件所占的列数。例如,android:layout_columnSpan=”2″,表示该控件占2列。

layout文件示例

GridLayout: GridLayout使用简介(转)[通俗易懂]
GridLayout: GridLayout使用简介(转)[通俗易懂]

复制代码
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:rowCount="2"
    android:columnCount="3" >
  <Button
        android:id="@+id/one"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:text="1"/>
  <Button
        android:id="@+id/two"
        android:text="2"/>
   <Button
        android:id="@+id/three"
        android:text="3"/>
  <Button
        android:id="@+id/devide"
        android:text="/"/>

</GridLayout>
复制代码

对应的显示效果图

GridLayout: GridLayout使用简介(转)[通俗易懂]

layout文件说明

  数字”1″实际上占据的空间大小是2列,但是第2列显示为空白。若要第2列不显示空白,需要设置 android:layout_gravity属性,参考下例。

 

2.3 android:layout_row

属性说明: 该控件所在行。例如,android:layout_row=”0″,表示在第1行显示该控件;android:layout_row=”1″,表示在第2行显示该控件。它和 android:layout_column类似。

 

2.4 android:layout_rowSpan

属性说明: 该控件所占的行数。例如,android:layout_rowSpan=”2″,表示该控件占2行。它和 android:layout_columnSpan类似。

 

2.5 android:layout_gravity

属性说明

该控件的布局方式。可以取以下值:
  top                      — 控件置于容器顶部,不改变控件的大小。
  bottom                — 控件置于容器底部,不改变控件的大小。
  left                     — 控件置于容器左边,不改变控件的大小。
  right                   — 控件置于容器右边,不改变控件的大小。
  center_vertical     — 控件置于容器竖直方向中间,不改变控件的大小。
  fill_vertical          — 如果需要,则往竖直方向延伸该控件。
  center_horizontal — 控件置于容器水平方向中间,不改变控件的大小。
  fill_horizontal      — 如果需要,则往水平方向延伸该控件。
  center                — 控件置于容器中间,不改变控件的大小。
  fill                     — 如果需要,则往水平、竖直方向延伸该控件。
  clip_vertical        — 垂直剪切,剪切的方向基于该控件的top/bottom布局属性。若该控件的gravity是竖直的:若它的gravity是top的话,则剪切该控件的底部;若该控件的gravity是bottom的,则剪切该控件的顶部。
  clip_horizontal     — 水平剪切,剪切的方向基于该控件的left/right布局属性。若该控件的gravity是水平的:若它的gravity是left的话,则剪切该控件的右边;若该控件的gravity是  right的,则剪切该控件的左边。
  start                  — 控件置于容器的起始处,不改变控件的大小。
  end                   — 控件置于容器的结束处,不改变控件的大小。

对应函数: setGravity(int)

layout文件示例:

GridLayout: GridLayout使用简介(转)[通俗易懂]
GridLayout: GridLayout使用简介(转)[通俗易懂]

复制代码
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:rowCount="2"
    android:columnCount="3" >
  <Button
        android:id="@+id/one"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:layout_gravity="fill"
        android:text="1"/>
  <Button
        android:id="@+id/two"
        android:text="2"/>
   <Button
        android:id="@+id/three"
        android:text="3"/>
  <Button
        android:id="@+id/devide"
        android:text="/"/>

</GridLayout>
复制代码

对应的显示效果图

GridLayout: GridLayout使用简介(转)[通俗易懂] 

 

 


3 应用示例

定义一个简单的计算器界面,包含“0-9、.、+、-、*、/、=、”。用GridLayout实现。

layout文件 

复制代码
<?xml version="1.0" encoding="utf-8"?>
<!-- GridLayout: 5行 4列 水平布局 -->
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:rowCount="5"
    android:columnCount="4" >
  <Button
        android:id="@+id/one"
        android:text="1"/>
  <Button
        android:id="@+id/two"
        android:text="2"/>
   <Button
        android:id="@+id/three"
        android:text="3"/>
  <Button
        android:id="@+id/devide"
        android:text="/"/>
  <Button
        android:id="@+id/four"
        android:text="4"/>
  <Button
        android:id="@+id/five"
        android:text="5"/>
  <Button
        android:id="@+id/six"
        android:text="6"/>
  <Button
        android:id="@+id/multiply"
        android:text="×"/>
  <Button
        android:id="@+id/seven"
        android:text="7"/>
  <Button
        android:id="@+id/eight"
        android:text="8"/>
  <Button
        android:id="@+id/nine"
        android:text="9"/>
    <Button
        android:id="@+id/minus"
        android:text="-"/>
    <Button
        android:id="@+id/zero"
        android:layout_columnSpan="2"
        android:layout_gravity="fill"
        android:text="0"/>
  <Button
        android:id="@+id/point"
        android:text="."/>
    <Button
        android:id="@+id/plus"
        android:layout_rowSpan="2"
        android:layout_gravity="fill"
        android:text="+"/>
    <Button
        android:id="@+id/equal"
        android:layout_columnSpan="3"
        android:layout_gravity="fill"
        android:text="="/> 
</GridLayout>
复制代码

 

点击下载:源代码

效果图:

GridLayout: GridLayout使用简介(转)[通俗易懂]

 

本文转自:Android 布局之GridLayout

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155158.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python 比较字符串是否一样

    python 比较字符串是否一样在python中,判断两个变量是否相等或一样,可以使用==或者is来判断;判断不一样可以使用isnot。示例1.有时候两个字符串打印出来看着一样,但是判断却是False?如果两个字符串末尾有其他符号,比如回车‘\n’,print的时候无法发现的,所以需要strip:a=a.strip()b=b.strip()ifa==b: print&amp;amp;amp;quot;True&amp;amp;amp;quot;2.有时候==判断是Tr…

  • java如何打印菱形_JAVA输出菱形

    java如何打印菱形_JAVA输出菱形菱形的打印方式,通过确定中间行,确定奇数然后做的处理,思路:上面部分通过确定打印数量为奇数,然后采用公式计算出奇数来,下面因为空格数量就是总行数减中间行数-1计算的,这样就可以计算出要打印的*的数量publicclassTestFile{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedm…

  • shell-循环

    shell-循环接上一篇shell运算符接着往下说,shell循环:shell循环有三种,一种是for循环,一种是while循环,还有一种是until循环,循环体中和java类似,可以使用break调出当前循环,continue继续下一次循环。for循环for循环以for开始,循环体在do和done之间for循环有两种各式,一种是带in,一种是类似java的for循环:比如说输出0到10之间的整数,给…

  • FPGA中实现对数运算「建议收藏」

    FPGA中实现对数运算「建议收藏」FPGA中实现对数运算主要有三种方法:(1)在外部直接算好对数值,按照数值范围做个表,存在ram里,到时候查表。为了减少表深度,提高资源利用率,可以考虑去掉部分低位数值,损失一定的精度。(2)使用cordic算法求解对数。(3)log10(x)=ln(x)*log10(e),log10(e)是常数可以手动先计算好,用IPCore的话多个乘法器。下面介绍使用IP核fl…

    2022年10月29日
  • String.Format使用方法

    String.Format使用方法

    2021年11月23日
  • java开发规范(个人理解)

    java开发规范(个人理解)

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号