`
wangyang191
  • 浏览: 32943 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Android TableLayout的使用说明

阅读更多
TableLayout特点:

      1)TableLayout和我们平时在网页上见到的Table有所不同,TableLayout没有边框的

      2)它是由多个TableRow对象组成,每个TableRow可以有0个或多个单元格,每个单元格就是一个View。这些TableRow,单元格不能设置layout_width,宽度默认是fill_parent的,只有高度layout_height可以自定义,默认是wrap_content。

      3)单元格可以为empty,并且通过android:layout_column可以设置index值实现跳开某些单元格。在TableRow之间

     4)添加View,设置layout_height以及背景色,就可以实现一条间隔线。android:layout_span可以设置合并几个单元格:
<?xml version="1.0" encoding="utf-8"?> 

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent"> 

    <TableRow> 

        <TextView 

            android:text="column1" 

            android:padding="3dip"  /> 

        <TextView 

            android:text="column2" 

            android:padding="3dip"  /> 

        <TextView 

            android:text="column3" 

            android:padding="3dip"  /> 

    </TableRow> 

    <TableRow> 

        <TextView 

          android:text="column11" 

          android:visibility="invisible"/> //cell不见了 

        <TextView 

            android:text="左边的invisible" 

            android:gravity="right" 

            android:padding="3dip" /> 

        <Button 

            android:id="@+id/go" 

            android:text="go"  

            android:padding="3dip" /> 

        <Button 

            android:text="cancel" 

            android:padding="3dip" /> 

    </TableRow> 

    <View                               //间隔线 

        android:layout_height="2dip" 

        android:background="#F00" /> 

    <TableRow> 

        <TextView 

           android:text="右边的cell empty" /> 

        <TextView 

            android:layout_column="2" 

            android:text="跳开empty cell" 

            android:padding="3dip" /> 

    </TableRow> 

    <TableRow> 

        <TextView 

            android:text="合并3个单元格" 

            android:layout_span="3" 

            android:gravity="center_horizontal" 

            android:background="#FFC0C0C0" 

            android:textColor="#f00" 

            android:padding="3dip" /> 

    </TableRow> 

</TableLayout> 

没有设置收缩/伸展效果

   注意,原来没有添加 android:padding="3dip" 的,发现那些column会凑在一起的,没有空白间隔!明显看到,那个cancel按钮被挤到几乎看不见了!这时候需要使用
     1)android:shrinkColumns="可收缩的column",
     2)android:stretchColumns="可伸展的column"。
    android:shrinkColumns和android:stretchColumns的值都是以0开始的index,但必须是string值,即用"1,2,5"来表示。可以用"*"来表示all columns。而且同一column可以同时设置为shrinkable和stretchable。
    如果使用TableLayout类的setColumnShrinkable/setColumnStretchable (int columnIndex, boolean isShrinkable)就麻烦些了,需要一个一个column来设置。也可以使用TableLayout的setShrinkAllColumns/setStretchAllColumns来设置all columns。
    判断这些column是否shrinkable或stretchable,可以调用isColumnShrinkable/isColumnStretchable(int columnIndex),isShrinkAllColumns()/isStretchAllColumns()。
<?xml version="1.0" encoding="utf-8"?> 

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="fill_parent" 

    android:layout_height="fill_parent" 

    android:shrinkColumns="0" > // 设置第一个column可收缩 

    <TableRow> 

        <TextView 

            android:text="column1" 

            android:padding="3dip"  /> 

        <TextView 

            android:text="column2" 

            android:padding="3dip"  /> 

        <TextView 

            android:text="column3" 

            android:padding="3dip"  /> 

    </TableRow> 

    <TableRow> 

        <TextView 

          android:text="column11" 

          android:visibility="invisible"/> 

        <TextView 

            android:text="左边的invisible" 

            android:gravity="right" 

            android:padding="3dip" /> 

        <Button 

            android:id="@+id/go2" 

            android:text="go2"  

            android:padding="3dip" /> 

        <Button 

            android:text="cancel" 

            android:padding="3dip" /> 

    </TableRow> 

    <View 

        android:layout_height="2dip" 

        android:background="#F00" /> 

    <TableRow> 

        <TextView 

          android:text="右边的cell empty" /> 

        <TextView 

            android:layout_column="2" 

            android:text="跳开empty cell" 

            android:padding="3dip" /> 

        <TextView 

            android:text="123456789" 

            android:padding="3dip" /> 

    </TableRow> 

</TableLayout> 

可收缩column效果

    现在可以看到第一个column为了让第4个column完整显示,而收缩得内容分为几行显示!

     而可伸展column的效果就是在其他column可以完整显示时,该column就会伸展,占最多空间:
<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:stretchColumns="1"> // 设置第二个column可伸展



   <TableRow>

        <TextView

            android:text="column1"

            android:padding="3dip" />

        <TextView

            android:text="column2"

            android:gravity="right"

            android:padding="3dip" />

        <TextView

            android:text="column3"

            android:padding="3dip"  />

    </TableRow>



    <TableRow>

        <TextView

            android:text="column1"

            android:padding="3dip" />

        <TextView

            android:text="column2"

            android:gravity="right"

            android:padding="3dip" />

        <TextView

            android:text="column3"

            android:padding="3dip"  />

    </TableRow>

</TableLayout>
可伸展column效果

      而动态隐藏column,可以调用TableLayout.setColumnCollapsed (int columnIndex, boolean isCollapsed)来指定相应的column。另外TableLayout类的boolean isColumnCollapsed (int columnIndex)能够判断指定的column是否隐藏。

      TableLayout可以用来做网页上的Form显示效果,看看官方的sample:
<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   android:stretchColumns="1">



   <TableRow>

       <TextView

           android:text="@string/table_layout_10_user"

           android:textStyle="bold"

           android:gravity="right"

           android:padding="3dip" />



       <EditText android:id="@+id/username"

           android:text="@string/table_layout_10_username_text"

           android:padding="3dip"

           android:scrollHorizontally="true" />

   </TableRow>



   <TableRow>

       <TextView

           android:text="@string/table_layout_10_password"

           android:textStyle="bold"

           android:gravity="right"

           android:padding="3dip" />



       <EditText android:id="@+id/password"

           android:text="@string/table_layout_10_password_text"

           android:password="true"

           android:padding="3dip"

           android:scrollHorizontally="true" />

   </TableRow>



   <TableRow

       android:gravity="right">



       <Button android:id="@+id/cancel"

           android:text="@string/table_layout_10_cancel" />



       <Button android:id="@+id/login"

           android:text="@string/table_layout_10_login" />

   </TableRow>

</TableLayout>
Form效果
分享到:
评论

相关推荐

    TableLayout数据显示

    以下是对TableLayout的详细说明: 1. **TableLayout基本概念**: TableLayout是一个线性布局的扩展,它允许开发者在垂直方向上堆叠多个TableRow,每个TableRow就像HTML中的元素,可以包含一个或多个单元格(View或...

    Android中使用TableLayout设计的厨房装修效果练习题要求说明.pdf

    在Android开发中,TableLayout是Android布局管理器之一,它允许开发者以表格的形式组织视图组件...参考文献中的《Android移动应用开发案例教程》可能会提供更多的帮助和实例,帮助你进一步掌握TableLayout的使用技巧。

    Android中使用TableLayout布局设计办公电话一览表教学案例要求说明.pdf

    可以参考范美英的《Android移动应用开发案例教程》这本书,书中可能有更多关于TableLayout使用的详细讲解和示例。 通过以上步骤,你可以构建一个功能完备、视觉上清晰的办公电话一览表。在实际开发中,记得根据...

    Android中使用自定义ViewGroup的总结

    本文将对如何在Android中创建和使用自定义ViewGroup进行总结,并提供一个具体的实例来演示如何为Child View设置属性。 首先,我们要了解自定义ViewGroup的两大类别: 1. 创建全新的ViewGroup类型:这通常涉及构建...

    Android布局(RelativeLayout、TableLayout等)使用方法

    "中心垂直对齐" /&gt; &lt;Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:text="水平下对齐" /&gt; &lt;/LinearLayout&gt; &lt;/LinearLayout&gt; 2....

    android界面布局droiddraw的使用和文件

    它使用Java Swing技术构建,允许开发者通过拖拽控件的方式直观地创建Android布局文件。 Android界面布局通常由XML文件定义,这些文件描述了屏幕上的各个组件(如按钮、文本视图等)的位置、大小和相互关系。...

    android 布局属性大总结

    本文详细介绍了 Android 中 TableLayout 和 RelativeLayout 的基本概念、布局原理以及常用属性。了解这些属性对于构建复杂且美观的应用界面至关重要。通过合理运用这些属性,开发者能够设计出既符合用户需求又具有...

    Android高级应用源码-android动态添加表格行.zip

    主要涉及的知识点包括Android布局管理器、表布局(TableLayout)以及动态添加View。 首先,我们要了解Android中的布局管理器。Android提供了多种布局,如线性布局(LinearLayout)、相对布局(RelativeLayout)、...

    android动态添加表格行.zip

    在Android开发中,有时我们需要创建一个可动态添加行的表格布局,这通常涉及到对`TableLayout`和`TableRow`组件的使用。`TableLayout`是Android SDK中的一个视图组,它允许我们创建类似电子表格的布局,而`TableRow`...

    Android实例开发完全手册

    - **实例说明:** 使用TableLayout来展示表格形式的数据。 - **具体实现:** 创建TableLayout并添加行和单元格。 - **特别提醒:** 注意避免表格布局过于复杂导致性能问题。 - **2.4 使用绝对布局...

    C#开发Android中文全解配vs截图.pdf

    此外,教程还介绍了材料设计的使用,包括如何在Android Designer中设计用户界面,以及如何使用不同的布局类型,例如LinearLayout, RelativeLayout, TableLayout等。 #### 用户界面组件 用户界面是应用与用户交互的...

    精通ANDROID 3(中文版)1/2

    1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 Android UI  1.5.3 Android基础组件  1.5.4 高级UI概念  1.5.5 Android Service组件  1.5.6 Android媒体和电话组件  1.5.7 ...

    android动态添加表格行

    这个场景通常涉及到`TableLayout`布局,它是Android提供的一个用于构建网格样式的视图容器。下面我们将深入探讨如何在Android应用中实现动态添加表格行。 首先,`TableLayout`是`LinearLayout`的扩展,它允许开发者...

    Android开发案例驱动教程 配套代码

    2.2.2 Android SDK版本说明 10 2.2.3 ADT配置 10 2.3 Android开发模拟器 11 2.3.1 创建模拟器 11 2.3.2 启动模拟器 13 2.3.3 键盘映射与模拟器控制 13 2.3.4 横屏与竖屏切换 14 第3章 第一个Android程序 15 ...

    Android应用源码之android动态添加表格行.zip

    源码中的“JavaApk源码说明.txt”可能包含了关于如何使用这个示例的详细说明,包括类的结构、关键方法的解释和使用示例。而“点这里查看更多优质源码~.url”则可能是一个链接,指向更多类似的Android开发资源。 在...

    老罗Android视频开发教程 android常用布局的介绍代码

    老罗的Android视频开发教程中详细介绍了几种常用的Android布局,包括线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)以及表格布局(TableLayout)。以下是这些布局的详细说明: 1. ...

    关于android开发的布局文件使用方法和例子代码

    以下是关于Android布局的详细说明,以及一些常用布局类型的实例和属性。 1. **FrameLayout**: FrameLayout允许将一个或多个视图放在容器的中心,彼此重叠。它是最基础的布局,通常用于展示单个视图或简单叠加视图...

    Android基础教程(二)之五大布局对象

    本文将详细介绍Android五大基本布局对象:`FrameLayout`(框架布局)、`LinearLayout`(线性布局)、`AbsoluteLayout`(绝对布局)、`RelativeLayout`(相对布局)及`TableLayout`(表格布局)。每种布局都有其独特...

    Android结合SQLite设计一款购物车

    0、TableLayout的使用 1、关于icon在AndroidUI里的使用 2、Sqlite数据库的应用 3、adapter适配器的使用 4、ViewModel数据监听 5、xmlns-shape的使用 风格普通,图片懒得去找。具体可以在专栏 【Android开发基础】三...

    Android开发基础习题

    3. **Android中常见的五种布局是LinerLayout、** **RelativeLayout** **、** **FrameLayout** **、** **TableLayout** **、** **GridLayout** **。** - **知识点解释:** - **LinearLayout**:线性布局是最简单的...

Global site tag (gtag.js) - Google Analytics