`
wangyang191
  • 浏览: 32428 次
  • 性别: 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效果
分享到:
评论

相关推荐

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

    Android中使用TableLayout设计的厨房装修效果练习题要求说明.pdf 学习资料 复习资料 教学资源

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

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

    精通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开发案例驱动教程 配套代码

    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结合SQLite设计一款购物车

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

    Android和SQLite开发一个购物车功能,包括增删改查多选提交等

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

    精通Android 3 (中文版)2/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自主学习项目报告(一).doc

    自主学习内容 按照上面的要求列出至少10条 收集编写代码过程中碰到的bug,说明bug发生的原因及解决方案 (1)使用actionProvider时出现的问题: 解决方案:换一种import的方式即可,如下所示: "1 "//import android....

    android开发——简易计算器的设计报告.doc

    Android 使用了Intent 这个特殊类,实现在屏幕与屏幕之间移动。Intent 数据结构两个最重要的部分是动作和动作对应的数据。Intent类绑定一次操作,它负责 携带这次操作所需要的数据以及操作的类型等。 3、Layout 用于...

    android开发实例大全_王东华

    实例003: 使用表格布局(TableLayout) 来布局屏幕 5 实例004: 使用绝对布局(AbsoluteLayout) 来布局屏幕 6 实例005: 使用标签布局(TabLayout)来 布局屏幕 8 实例006: 使用层布局(FrameLayout) 10 实例007...

    Android基础知识详解

    四、实例说明 18 Android控件的继承关系 22 一、View与ViewGroup关系 22 二、各控件的继承关系 23 界面布局 25 LinearLayout(线性布局) 25 TableLayout(表格布局) 28 RelativeLayout(相对布局) 31 AbsoluteLayout...

    kotlin-android-practice:一些用于使用Kotlin练习Android基础的小项目

    将此仓库克隆到本地计算机,然后选择一个以使用Android Studio打开 对于每个项目,您应该首先概述活动中的代码,如果不清楚,请回到此处,然后阅读每个项目的“参考”部分 滴虫 使用TableLayout进行简单的布局设计 ...

    Android开发资料合集-World版!

    0、ANDROID常用类库说明 6 1、ANDROID文件系统与应用程序架构 7 1.1、ANDROID 文件系统 7 1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 ...

    Android 开发技巧

    0、ANDROID常用类库说明 6 1、ANDROID文件系统与应用程序架构 7 1.1、ANDROID 文件系统 7 1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 ...

    android 面试2

    在使用时需要权限android.permission.RESTART_PACKAGES  在2.2,这个方法失效了。  在2.2添加了一个新的方法,killBackgroundProcesses(),需要权限 android.permission.KILL_BACKGROUND_PROCESSES  5. 请介绍下...

    TwelveCustomViews:收集网上的示例,练习理解自定义视图和视图容器类

    说明:上面计划的是对Android的控件和布局进行自定义封装,在阅读API和源码的过程中发现,对他们在Android封装的属性和操作的认识和理解更有意义。 所以,这个工程里的示例程序放弃了封装的计划,选择

Global site tag (gtag.js) - Google Analytics