zoukankan      html  css  js  c++  java
  • 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可以设置合并几个单元格: 

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>   
    2.   
    3. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"   
    4.   
    5.     android:layout_width="fill_parent"   
    6.   
    7.     android:layout_height="fill_parent">   
    8.   
    9.     <TableRow>   
    10.   
    11.         <TextView   
    12.   
    13.             android:text="column1"   
    14.   
    15.             android:padding="3dip"  />   
    16.   
    17.         <TextView   
    18.   
    19.             android:text="column2"   
    20.   
    21.             android:padding="3dip"  />   
    22.   
    23.         <TextView   
    24.   
    25.             android:text="column3"   
    26.   
    27.             android:padding="3dip"  />   
    28.   
    29.     </TableRow>   
    30.   
    31.     <TableRow>   
    32.   
    33.         <TextView   
    34.   
    35.           android:text="column11"   
    36.   
    37.           android:visibility="invisible"/> //cell不见了   
    38.   
    39.         <TextView   
    40.   
    41.             android:text="左边的invisible"   
    42.   
    43.             android:gravity="right"   
    44.   
    45.             android:padding="3dip" />   
    46.   
    47.         <Button   
    48.   
    49.             android:id="@+id/go"   
    50.   
    51.             android:text="go"    
    52.   
    53.             android:padding="3dip" />   
    54.   
    55.         <Button   
    56.   
    57.             android:text="cancel"   
    58.   
    59.             android:padding="3dip" />   
    60.   
    61.     </TableRow>   
    62.   
    63.     <View                               //间隔线   
    64.   
    65.         android:layout_height="2dip"   
    66.   
    67.         android:background="#F00" />   
    68.   
    69.     <TableRow>   
    70.   
    71.         <TextView   
    72.   
    73.            android:text="右边的cell empty" />   
    74.   
    75.         <TextView   
    76.   
    77.             android:layout_column="2"   
    78.   
    79.             android:text="跳开empty cell"   
    80.   
    81.             android:padding="3dip" />   
    82.   
    83.     </TableRow>   
    84.   
    85.     <TableRow>   
    86.   
    87.         <TextView   
    88.   
    89.             android:text="合并3个单元格"   
    90.   
    91.             android:layout_span="3"   
    92.   
    93.             android:gravity="center_horizontal"   
    94.   
    95.             android:background="#FFC0C0C0"   
    96.   
    97.             android:textColor="#f00"   
    98.   
    99.             android:padding="3dip" />   
    100.   
    101.     </TableRow>   
    102.   
    103. </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()。 

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>   
    2.   
    3. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"   
    4.   
    5.     android:layout_width="fill_parent"   
    6.   
    7.     android:layout_height="fill_parent"   
    8.   
    9.     android:shrinkColumns="0" > // 设置第一个column可收缩   
    10.   
    11.     <TableRow>   
    12.   
    13.         <TextView   
    14.   
    15.             android:text="column1"   
    16.   
    17.             android:padding="3dip"  />   
    18.   
    19.         <TextView   
    20.   
    21.             android:text="column2"   
    22.   
    23.             android:padding="3dip"  />   
    24.   
    25.         <TextView   
    26.   
    27.             android:text="column3"   
    28.   
    29.             android:padding="3dip"  />   
    30.   
    31.     </TableRow>   
    32.   
    33.     <TableRow>   
    34.   
    35.         <TextView   
    36.   
    37.           android:text="column11"   
    38.   
    39.           android:visibility="invisible"/>   
    40.   
    41.         <TextView   
    42.   
    43.             android:text="左边的invisible"   
    44.   
    45.             android:gravity="right"   
    46.   
    47.             android:padding="3dip" />   
    48.   
    49.         <Button   
    50.   
    51.             android:id="@+id/go2"   
    52.   
    53.             android:text="go2"    
    54.   
    55.             android:padding="3dip" />   
    56.   
    57.         <Button   
    58.   
    59.             android:text="cancel"   
    60.   
    61.             android:padding="3dip" />   
    62.   
    63.     </TableRow>   
    64.   
    65.     <View   
    66.   
    67.         android:layout_height="2dip"   
    68.   
    69.         android:background="#F00" />   
    70.   
    71.     <TableRow>   
    72.   
    73.         <TextView   
    74.   
    75.           android:text="右边的cell empty" />   
    76.   
    77.         <TextView   
    78.   
    79.             android:layout_column="2"   
    80.   
    81.             android:text="跳开empty cell"   
    82.   
    83.             android:padding="3dip" />   
    84.   
    85.         <TextView   
    86.   
    87.             android:text="123456789"   
    88.   
    89.             android:padding="3dip" />   
    90.   
    91.     </TableRow>   
    92.   
    93. </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效果 

  • 相关阅读:
    EBS SQL > Form & Report
    oracle sql 优化分析点
    MRP 物料需求计划
    MRPII 制造资源计划
    Barcode128 应用实务
    Oracle SQL语句优化技术分析
    APPSQLAP10710 Online accounting could not be created. AP Invoice 无法创建会计分录
    Oracle数据完整性和锁机制
    ORACLE Responsibility Menu Reference to Other User
    EBS 常用 SQL
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/3391172.html
Copyright © 2011-2022 走看看