Android中文API(116)——TableLayout-阿里云开发者社区

开发者社区> walb呀> 正文

Android中文API(116)——TableLayout

简介:
+关注继续查看

一、结构

public class TableLayout extends LinerLayout

java.lang.Object

         android.view.View

               android.view.ViewGroup

                      android.widget.LinearLayout

                             android.widget.TableLayout

二、概述

  按照行列来组织子视图的布局。表格布局包含一系列的 TableRow对象,用于定义行(实际上你也可以使用其它子对象,将在后面进行解释)。表格布局不为它的行、列和单元格显示表格线。每个行可以包含0个以上(包括0)的单元格; 每个单元格可以设置一个View对象.与行包含很多单元格一样, 表格包含很多列。表格的单元格可以为空.单元格可以象 HTML 那样跨列。

  列的宽度由该列所有行中最宽的一个单元格决定.不过表格布局可以通过 setColumnShrinkable() 方法或者 setColumnStretchable() 方法来标记某些列可以收缩或可以拉伸如果标记为可以收缩,列宽可以收缩以使表格适合容器的大小。如果标记为可以拉伸, 列宽可以拉伸以占用多余的空间。表格的总宽度由其父容器决定记住列可以同时具有可拉伸和可收缩标记是很重要的。在列可以调整其宽度以占用可用空间, 但不能超过限度时是很有用的.最后,你可以通过调用setColumnCollapsed() 方法来隐藏列。

  表格布局的子对象不能指定 layout_width 属性.宽度永远是 MATCH_PARENT。不过子对象可以定义 layout_height 属性;其默认值是 WRAP_CONTENT如果子对象是TableRow,其高度永远是 WRAP_CONTENT

  无论是在代码还是在 XML 布局文件中,单元格必须安装索引顺序加入表格行列号是从 0 开始的.如果你不为子单元格指定列号,其将自动增值,使用下一个可用列号如果你跳过某个列号,他在表格行中作为空可以改对待。参见 ApiDemos 中通过 XML 创建表格的布局示例。

虽然表格布局典型的子对象是表格行,实际上你可以使用任何视图类的子类, 作为表格视图的直接子对象.视图会作为只有一行并结合了所有列的单元格显示。

  参见

  Table Layout tutorial

三、内部类

  class        TableLayout.LayoutParams

  该类强制将子视图的宽度设为 MATCH_PARENT 将没有设置高度的子视图的高度设为 WRAP_CONTENT

四、XML属性

属性名称

描述

android:collapseColumns

隐藏从0开始的索引列。列直接必须用逗号隔开:1, 2, 5。非法或重复的设置将被忽略。

相关方法

setColumnCollapsed(int,boolean)

android:shrinkColumns

收缩从0开始的索引列。列直接必须用逗号隔开:1, 2, 5。非法或重复的设置将被忽略。你可以通过"*"代替收缩所有列。注意一列能同时表示收缩和拉伸。

相关方法

setColumnCollapsed(int,boolean)

android:stretchColumns

拉伸从0开始的索引列。列直接必须用逗号隔开:1, 2, 5。非法或重复的设置将被忽略。你可以通过"*"代替收缩所有列。注意一列能同时表示收缩和拉伸。

相关方法

setColumnCollapsed(int,boolean)

五、构造函数

  public TableLayout (Context context)

  为给定的上下文创建表格布局。

             参数

  context  应用程序上下文 

  public TableLayout (Context context, AttributeSet attrs)

  使用指定的属性集合为给定的上下文创建表格布局。

             参数

  context  应用程序上下文

  attrs        属性集合

六、公共方法

  public void addView (View child)

  添加子视图。如果子视图没有设置布局参数,则使用视图组(ViewGroup)的布局参数为该视图布局。

             参数

  child         添加的子视图 

  public void addView (View child, int index)

  添加子视图。如果子视图没有设置布局参数,则使用视图组(ViewGroup)的布局参数为该视图布局。

             参数

  child         添加的子视图

  index       子视图加入的位置索引

  public void addView (View child, int index, ViewGroup.LayoutParams params)

  用指定的布局参数添加一个子视图。

             参数

  child         添加的子视图

  index       子视图加入的位置索引

  params  为子视图指定得布局参数 

  public void addView (View child, ViewGroup.LayoutParams params)

  使用指定的布局参数添加子视图。

             参数

  child         添加的子视图

  params  设置到子视图上的布局参数 

  public TableLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

  返回一组基于提供的属性集合的布局参数集合。

             参数

  attrs        用于生成布局参数的属性集

  返回值

                       ViewGroup.LayoutParams或其子类的实例

  public boolean isColumnCollapsed (int columnIndex)

  返回指定列的折叠状态。

             参数

  columnIndex  列索引

  返回值

  折叠时为true;否则为false

  public boolean isColumnShrinkable (int columnIndex)

  返回指定的列是否可收缩。

             参数

  columnIndex  列索引

  返回值

                       如果列可以收缩,返回true;否则返回false

  public boolean isColumnStretchable (int columnIndex)

  返回指定的列是否可拉伸。

             参数

  columnIndex  列索引

  返回值

  如果列可以拉伸,返回true;否则返回false

  public boolean isShrinkAllColumns ()

  指示是否所有的列都是可收缩的。

  返回值

                       如果所有列都可收缩,返回true;否则返回false

  public boolean isStretchAllColumns ()

  指示是否所有的列都是可拉伸的。

  返回值

                       如果所有列都可拉伸,返回true;否则返回false

  public void requestLayout ()

  当某些变更导致视图的布局失效时调用该方法。该方法按照视图树的顺序调用。

  public void setColumnCollapsed (int columnIndex, boolean isCollapsed)

  折叠或恢复给定列。折叠时,列从屏幕上消失,其空间由其它列占用。 当列属于 TableRow 时才可以进行折叠/恢复操作。

  调用该方法会请求布局操作。

                 相关XML属性

                       android:collapseColumns

              参数

  columnIndex  列索引

  isCollapsed     折叠时为true;否则为false 

  public void setColumnShrinkable (int columnIndex, boolean isShrinkable)

  设置指定列是否可收缩。当行太宽时,表格可以收缩该列以提供更多空间

  调用该方法会请求布局操作

             相关XML属性

                            android:shrinkColumns

                 参数

  columnIndex  列索引

  isShrinkable    如果列可以收缩,设为真;否则设为假。默认是假。 

  public void setColumnStretchable (int columnIndex, boolean isStretchable)

  设置指定列是否可拉伸。可拉伸时,列会尽可能多的占用行中的可用空间

  调用该方法会请求布局操作

             相关XML属性

                            android:stretchColumns

              参数

  columnIndex  列索引

  isStretchable 如果列可以拉伸,设为真;否则设为假.默认是假 

  public void setOnHierarchyChangeListener (ViewGroup.OnHierarchyChangeListener listener)

  注册当从视图中添加或移除子视图时发生的回调函数

             参数

  listener  层次结构变更时执行的回调函数 

  public void setShrinkAllColumns (boolean shrinkAllColumns)

  标记所有列为可收缩的便利的方法。

             相关XML属性

   android:shrinkColumns

             参数

  shrinkAllColumns    如果标记所有列为可收缩时为true 

  public void setStretchAllColumns (boolean stretchAllColumns)

  标记所有列为可拉伸的便利的方法。

                   相关XML属性

                            android:stretchColumns

                   参数

stretchAllColumns           如果标记所有列为可拉伸时为true

七、受保护方法

  protected boolean checkLayoutParams (ViewGroup.LayoutParams p)

    (译者注:检测是不是AbsoluteLayout.LayoutParams的实例)

  protected LinearLayout.LayoutParams generateDefaultLayoutParams ()

  返回宽度为MATCH_PARENT 高度为WRAP_CONTENT的布局参数集合。

             返回值

  默认布局参数集合或空

  protected LinearLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

  基于提供的布局参数返回一组安全的布局参数集合.当传入 ViewGroup 的视图的参数没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams) 的检测时,调用该方法该方法会返回适合 ViewGroup 的新的布局参数,可能从指定的布局参数中复制适当的属性。

             参数

  p      要转换为适合于 ViewGroup 的布局参数的集合

                返回值

                       ViewGroup.LayoutParams或其子类的实例

  protected void onLayout (boolean changed, int l, int t, int r, int b)

  该视图设置其子视图的大小及位置时调用.派生类可以重写此方法,并为其子类布局。

             参数

  changed           是否为视图设置了新的大小和位置

  l       相对于父视图的左侧的位置

  t      相对于父视图的顶部的位置

  r      相对于父视图的右侧的位置

  b      相对于父视图的底部的位置 

  protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

  评估视图及其内容,以决定其宽度和高度.此方法由measure(int, int) 调用,子类可以重载以提供更精确、更有效率的衡量其内容尺寸的方法。

  约定: 覆盖该方法时,必须调用 setMeasuredDimension(int, int) 方法来保存评估结果的视图的宽度和高度.如果忘记将导致 measure(int, int) 方法抛出IllegalStateException异常.要有效的利用父类的onMeasure(int, int)方法。

  基类测量的是背景的大小,除非 MeasureSpec 允许超过背景.子类应该重写 onMeasure(int, int) 方法,以为其内容提供更适合的大小。

  如果重写了该方法,子类要确保其高度和宽度大于等于视图的最小高度和宽度getSuggestedMinimumHeight()  getSuggestedMinimumWidth()

             参数

  widthMeasureSpec         父视图要求的横向空间大小.该要求由 View.MeasureSpec 进行了编码处理。

heightMeasureSpec        父视图要求的纵向空间大小.该要求由 View.MeasureSpec 进行了编码处理。

八、补充 

    文章精选

                   Android UI学习 - TableLayout

TableLayout.LayoutParams

译者署名: madgoat

译者链接: http://madgoat.cn

版本:Android 3.0 r1

结构

继承关系

public static class TableLayout.LayoutParams extends LinerLayout.LayoutParams     

java.lang.Object

         android.view.ViewGroup.LayoutParams

               android.view.ViewGroup.MarginLayoutParams

                      android.widget.LinearLayout.LayoutParams

                             android.widget.TableLayout.LayoutParams

概述

         这种布局参数强制每个子元素的宽度为MATCH_PARENT每个子元素的高度为WRAP_CONTENT,但只有在未指定高度的情况下。

构造函数

  public TableLayout.LayoutParams (Context c, AttributeSet attrs)

public TableLayout.LayoutParams (int w, int h)

public TableLayout.LayoutParams (int w, int h, float initWeight)

public TableLayout.LayoutParams ()

设置子元素的宽为ViewGroup.LayoutParams高为WRAP_CONTENT

public TableLayout.LayoutParams (ViewGroup.LayoutParams p)

public TableLayout.LayoutParams (ViewGroup.MarginLayoutParams source)

公共方法

protected void setBaseAttributes (TypedArray a, int widthAttr, int heightAttr)

修改行宽度的参数为MATCH_PARENT行高度的布局参数如果没有指定则修改为WRAP_CONTENT

参数

     一组样式属性

widthAttr        获取的宽度属性

heightAttr       获取的高度属性

本文转自博客园农民伯伯的博客,原文链接:Android中文API(116)——TableLayout,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
我为什么要放弃 RESTful,选择拥抱 GraphQL
REST作为一种现代网络应用非常流行的软件架构风格,自从Roy Fielding博士在2000年他的博士论文中提出来到现在已经有了20年的历史。它的简单易用性,可扩展性,伸缩性受到广大Web开发者的喜爱。
9 0
为什么 MySQL 不推荐默认值为 null ?
通常能听到的答案是使用了NULL值的列将会使索引失效,但是如果实际测试过一下,你就知道IS NULL会使用索引,所以上述说法有漏洞。
11 0
Google 开源的依赖注入库,比 Spring 更小更快!
Guice是Google开源的一个依赖注入类库,相比于Spring IoC来说更小更快。Elasticsearch大量使用了Guice,本文简单的介绍下Guice的基本概念和使用方式。
10 0
听说 Spring AOP 有坑?那就来踩一踩
前言 前几日,有朋友分享了这样一个案例: 原来的项目一直都正常运行,突然
10 0
首长,Redis 性能优化十三条军规立好了,请过目~
Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻谨记优化铁则,才能使得Redis性能发挥到极致。 本文将会介绍十三条性能优化军规,开发过程中只要按照执行,性能必能质的飞跃。
19 0
我为什么要放弃 RESTful,选择拥抱 GraphQL
REST作为一种现代网络应用非常流行的软件架构风格,自从Roy Fielding博士在2000年他的博士论文中提出来到现在已经有了20年的历史。它的简单易用性,可扩展性,伸缩性受到广大Web开发者的喜爱。
9 0
一次非常有意思的 SQL 优化经历:从 30248.271s 到 0.001s
场景 我用的数据库是mysql5.6,下面简单的介绍下场景
11 0
【保姆级教程】Spring Boot 单元测试
【保姆级教程】Spring Boot 单元测试 一、 单元测试的概念 概念: \1. 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。在Java中单元测试的最小单元是类。
8 0
+关注
1038
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载