• [Android] TableLayout


    public class TableLayout extends LinearLayout

    查过文档,整理下要点:

    • 一个 TableLayout 包含一些 TableRow 对象,每个对象代表一行。除此之外也可以包含其他对象,比如直接放入 <TextView> 。
    • TableLayout 容器不会为子元素显示边框线。
    • 每一行包含 0 个或多个单元,每个单元可以放一个 View 对象。
    • 一个 Table 的单元可以为空
    • 单元可以像 HTML 一样占据多列 <span>
    • 一个列的宽度由这一列中拥有最宽的单元的某一行宽度决定(想想也是)
    • TableLayout 可以用 setColumnShrinkable() 或者 setColumnStretchable() 指定确定的列的收缩性或者扩展性
    • 一旦设定可收缩,列的宽度可以被收缩至适应其 parent 对象。
    • 一旦设定可拉伸,其可拓展宽度以适应任何多余的空间,但不会超过这个空间
    • 表 Table 的总宽度由它自己 parent 的容器决定
    • 任一列是可以同时具备可收缩性和可拉伸性的。在这种情况下,列总会改变其尺寸,占满所有的可用空间,且用不会超过这个范围。
    • 最后,可以用 setColumnCollapsed() 隐藏一列

      我们无法为 TableLayout 的 children 指定 layout_width 属性。宽度永远是 MATCH_PARENT。但 layout_height 属性可以由 child 定义平;默认值是 WRAP_CONTENT。如果一个 child 是 TableRow,则高度总是 WRAP_CONTENT。

      表的单元必须按照增加列的排序填至行中,在代码和XML文件都要这样。列的索引是从0开始的。如果你不为 child 单元指定列序号,其会自动向下一个有效列增加。如果你跳过某列的索引,这一列会被视为这一行的空单元。

      虽然 TableLayout 典型的 children 是 TableRow,但你也可用任何 View 的子类来作为其直接的 child(第一点)。这个 View 会作为一个占据所有列的单行显示。

    看了 APIDemos 的一些例子,感觉比较全面了,这个布局比较简单,也不是很常用,主要是一些规则要熟悉熟悉,下面就直接从 ApiDemos 选一些典型的例子,基本够用了。

    本文地址:http://www.cnblogs.com/rossoneri/p/4369333.html

    资源文件:

     1 <string name="table_layout_1_star">*</string>
     2 <string name="table_layout_1_triple_star">***</string>
     3 <string name="table_layout_1_open">Openu2026</string>
     4 <string name="table_layout_1_open_shortcut">Ctrl-O</string>
     5 <string name="table_layout_1_save">Save Asu2026</string>
     6 <string name="table_layout_1_save_shortcut">(Save Document)</string>
     7 <string name="table_layout_1_quit">Quit Application</string>
     8 <string name="table_layout_1_quit_shortcut">Ctrl-Shift-Q</string>
     9 <string name="table_layout_2_path_1">~/path/to/file/to/open</string>
    10 <string name="table_layout_2_path_2">~/.profile</string>
    11 <string name="table_layout_2_open">Open</string>
    12 <string name="table_layout_2_save">Save</string>
    13 <string name="table_layout_2_save_all">Save All</string>
    14 <string name="table_layout_3_star">*</string>
    15 <string name="table_layout_3_triple_star">***</string>
    16 <string name="table_layout_3_open">Openu2026</string>
    17 <string name="table_layout_3_open_shortcut">Ctrl-O</string>
    18 <string name="table_layout_3_save">Save Asu2026</string>
    19 <string name="table_layout_3_save_shortcut">(Save Document)</string>
    20 <string name="table_layout_3_too_long">Too Long</string>
    21 <string name="table_layout_3_quit">Quit Application</string>
    22 <string name="table_layout_3_quit_shortcut">Ctrl-Shift-Q</string>
    23 <string name="table_layout_4_open">Openu2026</string>
    24 <string name="table_layout_4_open_shortcut">Ctrl-O</string>
    25 <string name="table_layout_4_save">Save Asu2026</string>
    26 <string name="table_layout_4_save_shortcut">Ctrl-Shift-S</string>
    27 <string name="table_layout_5_open">Openu2026</string>
    28 <string name="table_layout_5_open_shortcut">Ctrl-O</string>
    29 <string name="table_layout_5_save">Saveu2026</string>
    30 <string name="table_layout_5_save_shortcut">Ctrl-S</string>
    31 <string name="table_layout_5_save_as">Save Asu2026</string>
    32 <string name="table_layout_5_save_as_shortcut">Ctrl-Shift-S</string>
    33 <string name="table_layout_5_import">Importu2026</string>
    34 <string name="table_layout_5_export">Exportu2026</string>
    35 <string name="table_layout_5_export_shortcut">Ctrl-E</string>
    36 <string name="table_layout_5_quit">Quitu2026</string>
    37 <string name="table_layout_6_x">X</string>
    38 <string name="table_layout_6_open">Openu2026</string>
    39 <string name="table_layout_6_open_shortcut">Ctrl-O</string>
    40 <string name="table_layout_6_save">Saveu2026</string>
    41 <string name="table_layout_6_save_shortcut">Ctrl-S</string>
    42 <string name="table_layout_6_save_as">Save Asu2026</string>
    43 <string name="table_layout_6_save_as_shortcut">Ctrl-Shift-S</string>
    44 <string name="table_layout_6_import">Importu2026</string>
    45 <string name="table_layout_6_export">Exportu2026</string>
    46 <string name="table_layout_6_export_shortcut">Ctrl-E</string>
    47 <string name="table_layout_6_quit">Quitu2026</string>
    48 <string name="table_layout_7_x">X</string>
    49 <string name="table_layout_7_open">Openu2026</string>
    50 <string name="table_layout_7_open_shortcut">Ctrl-O</string>
    51 <string name="table_layout_7_save">Saveu2026</string>
    52 <string name="table_layout_7_save_shortcut">Ctrl-S</string>
    53 <string name="table_layout_7_save_as">Save Asu2026</string>
    54 <string name="table_layout_7_save_as_shortcut">Ctrl-Shift-S</string>
    55 <string name="table_layout_7_import">Importu2026</string>
    56 <string name="table_layout_7_export">Exportu2026</string>
    57 <string name="table_layout_7_export_shortcut">Ctrl-E</string>
    58 <string name="table_layout_7_toggle_checkmarks">Toggle Checkmarks</string>
    59 <string name="table_layout_7_toggle_shortcuts">Toggle Shortcuts</string>
    60 <string name="table_layout_8_x">X</string>
    61 <string name="table_layout_8_open">Openu2026</string>
    62 <string name="table_layout_8_open_shortcut">Ctrl-O</string>
    63 <string name="table_layout_8_save">Saveu2026</string>
    64 <string name="table_layout_8_save_shortcut">Ctrl-S</string>
    65 <string name="table_layout_8_save_as">Save Asu2026</string>
    66 <string name="table_layout_8_save_as_shortcut">Ctrl-Shift-S</string>
    67 <string name="table_layout_8_import">Importu2026</string>
    68 <string name="table_layout_8_export">Exportu2026</string>
    69 <string name="table_layout_8_export_shortcut">Ctrl-E</string>
    70 <string name="table_layout_8_toggle_stretch">Toggle Stretch</string>
    71 <string name="table_layout_9_open">Openu2026</string>
    72 <string name="table_layout_9_open_shortcut">Ctrl-O</string>
    73 <string name="table_layout_9_save">Saveu2026</string>
    74 <string name="table_layout_9_save_shortcut">Ctrl-S</string>
    75 <string name="table_layout_9_save_as">Save Asu2026</string>
    76 <string name="table_layout_9_save_as_shortcut">Ctrl-Shift-S</string>
    77 <string name="table_layout_9_save_all">Save All And Do A Lot Of Stuff Just To Be Too Long For This Screen Because It Is A Test After All</string>
    78 <string name="table_layout_9_save_all_shortcut">Ctrl-E</string>
    79 <string name="table_layout_9_import">Importu2026</string>
    80 <string name="table_layout_9_export">Exportu2026</string>
    81 <string name="table_layout_9_export_shortcut">Ctrl-E</string>
    82 <string name="table_layout_9_toggle_shrink">Toggle Shrink</string>
    83 <string name="table_layout_10_user">User</string>
    84 <string name="table_layout_10_password">Password</string>
    85 <string name="table_layout_10_cancel">Cancel</string>
    86 <string name="table_layout_10_login">Login</string>
    87 <string name="table_layout_12_a">A</string>
    88 <string name="table_layout_12_b">BB</string>
    89 <string name="table_layout_12_c">CCCC</string>
    90 <string name="table_layout_12_d">D</string>
    91 <string name="table_layout_12_e">E</string>
    92 <string name="table_layout_12_f">F</string>
    93 <string name="table_layout_12_g">G</string>
    94 <string name="table_layout_12_h">H</string>
    strings.xml

    1.基本用法:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent">
     5 
     6     <TableRow>
     7         <TextView
     8           android:text="@string/table_layout_1_star"
     9             android:padding="3dip" />
    10         <TextView
    11             android:text="@string/table_layout_1_open"
    12             android:padding="3dip" />
    13         <TextView
    14             android:text="@string/table_layout_1_open_shortcut"
    15             android:padding="3dip" />
    16     </TableRow>
    17 
    18     <TableRow>
    19         <TextView
    20             android:text="@string/table_layout_1_triple_star"
    21             android:padding="3dip" />
    22         <TextView
    23             android:text="@string/table_layout_1_save"
    24             android:padding="3dip" />
    25         <TextView
    26             android:text="@string/table_layout_1_save_shortcut"
    27             android:padding="3dip" />
    28     </TableRow>
    29 
    30     <TableRow>
    31         <TextView
    32             android:text="@string/table_layout_1_star"
    33             android:padding="3dip" />
    34         <TextView
    35             android:text="@string/table_layout_1_quit"
    36             android:padding="3dip" />
    37         <TextView
    38             android:text="@string/table_layout_1_quit_shortcut"
    39             android:padding="3dip" />
    40     </TableRow>
    41 </TableLayout>

    效果:

    2.有空单元的情况:

     1 <TableLayout 
     2     android:layout_width="match_parent"
     3     android:layout_height="match_parent">
     4 
     5     <TableRow>
     6         <Button
     7             android:text="@string/table_layout_2_open" />
     8         <TextView
     9             android:text="@string/table_layout_2_path_1"
    10             android:padding="3dip" />
    11     </TableRow>
    12     <TableRow>
    13         <Button
    14             android:text="@string/table_layout_2_save_all"/>
    15     </TableRow>
    16     <TableRow>
    17         <Button
    18             android:text="@string/table_layout_2_save"
    19             android:visibility="invisible" />
    20         <TextView
    21             android:text="@string/table_layout_2_path_2"
    22             android:padding="3dip" />
    23     </TableRow>
    24 </TableLayout>

    效果

     3.加上对齐属性: stretchColumn="1" 拉伸第一列

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:stretchColumns="1">
     6 
     7     <TableRow>
     8         <TextView
     9             android:text="@string/table_layout_4_open"
    10             android:padding="3dip" />
    11         <TextView
    12             android:text="@string/table_layout_4_open_shortcut"
    13             android:gravity="right"
    14             android:padding="3dip" />
    15     </TableRow>
    16 
    17     <TableRow>
    18         <TextView
    19             android:text="@string/table_layout_4_save"
    20             android:padding="3dip" />
    21         <TextView
    22             android:text="@string/table_layout_4_save_shortcut"
    23             android:gravity="right"
    24             android:padding="3dip" />
    25     </TableRow>
    26 </TableLayout>

    效果:

    把stretchColumns="1"改为 stretchColumns="0,1",两列都拉伸

    效果:

    4.span

     1 <TableLayout 
     2     android:layout_width="match_parent"
     3     android:layout_height="wrap_content">
     4 
     5     <TableRow>
     6         <TextView
     7             android:text="@string/table_layout_12_a"
     8             android:background="#FFFF0000"
     9             android:padding="3dip" />
    10         <TextView
    11             android:text="@string/table_layout_12_b"
    12             android:background="#FF00FF00"
    13             android:padding="3dip" />
    14         <TextView
    15             android:text="@string/table_layout_12_c"
    16             android:background="#FF0000FF"
    17             android:padding="3dip" />
    18     </TableRow>
    19 
    20     <TableRow>
    21         <TextView
    22             android:text="@string/table_layout_12_d"
    23             android:layout_span="2"
    24             android:gravity="center_horizontal"
    25             android:background="#FF0000FF"
    26             android:padding="3dip" />
    27         <TextView
    28             android:text="@string/table_layout_12_e"
    29             android:background="#FF00FF00"
    30             android:padding="3dip" />
    31     </TableRow>
    32 
    33     <TableRow>
    34         <TextView
    35             android:text="@string/table_layout_12_f"
    36             android:background="#FFFF00FF"
    37             android:padding="3dip" />
    38         <TextView
    39             android:text="@string/table_layout_12_g"
    40             android:background="#FF00FF00"
    41             android:padding="3dip" />
    42         <TextView
    43             android:text="@string/table_layout_12_h"
    44             android:background="#FFFF0000"
    45             android:padding="3dip" />
    46     </TableRow>
    47 
    48     <TableRow>
    49         <TextView
    50             android:text="@string/table_layout_12_a"
    51             android:background="#FF00FF00"
    52             android:padding="3dip" />
    53         <TextView
    54             android:text="@string/table_layout_12_b"
    55             android:layout_span="2"
    56             android:gravity="center_horizontal"
    57             android:background="#FF0000FF"
    58             android:padding="3dip" />
    59     </TableRow>
    60 
    61     <TableRow>
    62         <TextView
    63             android:text="@string/table_layout_12_g"
    64             android:layout_span="3"
    65             android:gravity="center_horizontal"
    66             android:background="#FFC0C0C0"
    67             android:padding="3dip" />
    68     </TableRow>
    69 </TableLayout>

    效果:

    5.复杂布局,garvity 和 layout_gravity 对齐,前者是其 child 的位置,后者是其自身的位置:

     1 <TableLayout 
     2     android:layout_width="match_parent"
     3     android:layout_height="wrap_content"
     4     android:stretchColumns="1">
     5 
     6     <TableRow>
     7         <TextView
     8             android:layout_column="1"
     9             android:text="@string/table_layout_7_open"
    10             android:padding="3dip" />
    11         <TextView
    12             android:text="@string/table_layout_7_open_shortcut"
    13             android:gravity="right"
    14             android:padding="3dip" />
    15     </TableRow>
    16 
    17     <TableRow>
    18         <TextView
    19             android:layout_column="1"
    20             android:text="@string/table_layout_7_save"
    21             android:background="#FF00FF00"
    22             android:padding="3dip" />
    23         <TextView
    24             android:text="@string/table_layout_7_save_shortcut"
    25             android:gravity="right"
    26             android:padding="3dip" />
    27     </TableRow>
    28 
    29     <TableRow>
    30         <!-- Horizontally centers the content of the cell -->
    31         <TextView
    32             android:layout_column="1"
    33             android:text="@string/table_layout_7_save_as"
    34             android:background="#FFFF0000"
    35             android:layout_gravity="center_horizontal"
    36             android:padding="3dip" />
    37         <TextView
    38             android:text="@string/table_layout_7_save_as_shortcut"
    39             android:background="#FFFF00FF"
    40             android:gravity="right"
    41             android:padding="3dip" />
    42     </TableRow>
    43 
    44     <View
    45         android:layout_height="2dip"
    46         android:background="#FF909090" />
    47 
    48     <TableRow>
    49         <TextView
    50             android:text="@string/table_layout_7_x"
    51             android:padding="3dip" />
    52         <TextView
    53             android:text="@string/table_layout_7_import"
    54             android:padding="3dip" />
    55     </TableRow>
    56 
    57     <TableRow>
    58         <View
    59             android:layout_height="68dip"
    60             android:background="#FF909090" />
    61         <!-- Aligns the content of the cell to the bottom right -->
    62         <TextView
    63             android:text="@string/table_layout_7_export"
    64             android:background="#FFFF0000"
    65             android:layout_gravity="right|bottom"
    66             android:padding="3dip" />
    67         <TextView
    68             android:text="@string/table_layout_7_export_shortcut"
    69             android:background="#FF00FFFF"
    70             android:gravity="right"
    71             android:padding="3dip" />
    72     </TableRow>
    73 
    74     <View
    75         android:layout_height="2dip"
    76         android:background="#FF909090" />
    77 </TableLayout>

    效果

  • 相关阅读:
    数据类型
    表达式
    类型
    go杂货铺
    rest framework
    go 学习之路(三)
    go 学习之路(二)
    文件管理之字符处理命令,打包压缩
    文件管理之文件查找,上传下载,输出重定向
    文本命令之三剑客初探
  • 原文地址:https://www.cnblogs.com/rossoneri/p/4369333.html
Copyright © 2020-2023  润新知