>  기사  >  웹 프론트엔드  >  CSS: 테이블 레이아웃 테이블 레이아웃 자세한 설명

CSS: 테이블 레이아웃 테이블 레이아웃 자세한 설명

黄舟
黄舟원래의
2018-05-12 16:56:224557검색

1. Tablelayout 소개

Tablelayout 클래스는 행과 열 형태로 컨트롤을 관리합니다. 각 행은 TableRow 개체 또는 View 컨트롤입니다. TableRow 개체인 경우 TableRow 아래에 하위 컨트롤을 추가할 수 있습니다. 기본적으로 각 하위 컨트롤은 하나의 열을 차지합니다. 뷰인 경우 뷰는 자체 행을 차지합니다.

2. TableLayout의 행 수와 열 수 결정(최대 원칙)

TableLayout의 행 수는 개발자가 직접 지정합니다. 즉, TableRow 객체(또는 View 수)만큼 행이 있습니다. 통제 수단). TableLayout의 열 수는 가장 많은 하위 컨트롤을 포함하는 TableRow의 열 수와 같습니다. 예를 들어, 첫 번째 TableRow에는 2개의 하위 컨트롤이 포함되고, 두 번째 TableRow에는 3개가 포함되고, 세 번째 TableRow에는 4개가 포함되며, TableLayout의 열 수는 4개입니다.

3 TableLayout의 설정 가능한 속성에 대한 자세한 설명.

전반적으로 이 TableLayout의 속성은 HTML의 Table 태그 속성과 유사합니다. 다양한 속성은 다음과 같습니다.

TableLayout의 설정 가능한 속성에는 전역 속성 및 셀 속성이 포함됩니다.

1. 전역 속성은 다음 세 가지 매개변수가 있는 열 속성입니다.

android:stretchColumns 확장 가능한 열을 설정합니다. 열은 행 방향으로 늘어나 전체 행을 차지할 수 있습니다.

android:shrinkColumns 축소 가능한 열을 설정합니다. 열에 있는 하위 컨트롤의 내용이 너무 많아 행에 밀집된 경우 하위 컨트롤의 내용이 열 방향으로 표시됩니다.

android:collapseColumns 열을 숨기도록 설정합니다.

예:

android:stretchColumns="0" 열 0을 늘릴 수 있음

android:shrinkColumns="1,2" 열 1과 2를 줄일 수 있음

android:collapseColumns="*" 모든 행 숨기기

참고: 열에는 StretchColumns 및 ShrinkColumns 속성이 모두 있을 수 있습니다. 그렇다면 열에 N개 이상의 내용이 있으면 해당 내용이 "여러 줄"로 표시됩니다. (실제 다중 행은 ​​아니지만 시스템이 필요에 따라 행의 레이아웃_높이를 자동으로 조정합니다.)

2. 셀 속성에는 다음 2개의 매개변수가 있습니다.

android:layout_column 셀이 표시되는 열을 지정합니다.

android:layout_span 이 셀이 차지하는 열 수를 지정합니다(지정하지 않은 경우 1입니다)

예:

android:layout_column="1" 이 컨트롤은 열 1에 표시됩니다

android:layout_span="2" 이 컨트롤은 2개의 열을 차지합니다

참고: 컨트롤은 이 두 가지 특성을 동시에 가질 수도 있습니다.

                fb59c579ebfb7269a6f27f88cf89a903

                    c0648ed185d8ae62b1dbc5d5ee164d75

                        35e5d1d4517db4ce9622f9e9fc4abfd2

                        65e69d13b5882f73625a137bdcece4be
                    7ecc819b6dde1210a8f1625aa8bc8288
                a518716ab458823658a4cde322f226b3

해당 작업 렌더링은 다음과 같습니다.

요약하면 일반적인 TableLayOut 레이아웃 방법은 거의 사용되지 않지만 위의 설정 인터페이스와 마찬가지로 TableLayout 레이아웃은 매우 유용합니다.

1: TableLayout은 테이블 레이아웃입니다.

xml 레이아웃 파일 tablelayout을 정의합니다.

콘텐츠 설명:

TableLayout은 UI 구성 요소를 관리하기 위해 행과 열을 사용합니다. 행과 열 수를 선언합니다. 대신 TableRow 및 기타 구성 요소를 추가하여 테이블의 행과 열 수를 제어합니다.

vTableRow를 TableLayout에 추가할 때마다 테이블에 행이 추가됩니다. TableRow도 컨테이너입니다. 구성 요소를 추가할 때마다 열이 추가됩니다. vTableLayout에 컴포넌트를 직접 추가하면 이 컴포넌트가 한 행을 차지하는 것으로 간주됩니다. v테이블 레이아웃의 열 너비는 각 열에서 가장 넓은 구성 요소의 너비입니다.

 android:collapseColumns="1---隐藏该TableLayout里的TableRow的列1,即第2列(从0开始计算),若有多列要隐藏,用“,”隔开。setColumnCollapsed(int,boolean)

android:stretchColumns="0,1,2"----设置列0、1、2为可伸展列。setColumnCollapsed(int,boolean)

android:shrinkColumns="1,2"-----设置列1、2为可收缩列。当LayoutRow里面的控件还没有布满布局时,shrinkColumns不起作用 setColumnCollapsed(int,boolean)

android:background="@drawable/picture_name"----本例中没有涉及此属性,它是要设置当前view 的背景图片,图片文件应该放在res文件夹下。

android:layout_column="1":表示控件放在标号为1的列上,标号是从0开始的 
android:layout_span表示一个控件占几列空间 
可以用”*”来表示所有列,同一列可以同时设置为shrinkable和stretchable

 函数:

publicTableLayout (Context context);
//为给定的上下文创建表格布局。
//参数  
 context  应用程序上下文
publicTableLayout (Context context, AttributeSet attrs)
//使用指定的属性集合为给定的上下文创建表格布局。
//参数   
 context  应用程序上下文     attrs        属性集合
publicvoid addView (View child)
publicvoid addView (View child, intindex)
publicvoid addView (View child, intindex, ViewGroup.LayoutParams params)
//添加子视图。如果子视图没有设置布局参数,则使用视图组(ViewGroup)的布局参数为//该视图布局。index 
 子视图加入的位置索引
publicvoid addView (View child, ViewGroup.LayoutParams params)
//使用指定的布局参数添加子视图。
//参数   
 child         添加的子视图   params  设置到子视图上的布局参数
publicTableLayout.LayoutParams generateLayoutParams (AttributeSet attrs)
//返回一组基于提供的属性集合的布局参数集合。
//参数
//attrs       
 用于生成布局参数的属性集
//返回值       
 ViewGroup.LayoutParams或其子类的实例

? 

publicboolean isColumnCollapsed (intcolumnIndex)
//返回指定列的折叠状态。
//参数  
 columnIndex  列索引
//返回值    
 折叠时为true;否则为false 
 
publicboolean isColumnShrinkable (intcolumnIndex)
//返回指定的列是否可收缩。
//参数     
 columnIndex  列索引
//返回值   
 如果列可以收缩,返回true;否则返回false
publicboolean isColumnStretchable (intcolumnIndex)
//返回指定的列是否可拉伸。
//参数      
 columnIndex  列索引
//返回值    
 如果列可以拉伸,返回true;否则返回false

?

publicboolean isShrinkAllColumns ()
//指示是否所有的列都是可收缩的。
//返回值
//
 如果所有列都可收缩,返回true;否则返回false
publicboolean isStretchAllColumns ()
//指示是否所有的列都是可拉伸的。
//返回值   
 如果所有列都可拉伸,返回true;否则返回false
publicvoid requestLayout ()
//当某些变更导致视图的布局失效时调用该方法。该方法按照视图树的顺序调用。
 
  
publicvoid setColumnCollapsed (intcolumnIndex, booleanisCollapsed)
 
  //折叠或恢复给定列。折叠时,列从屏幕上消失,其空间由其它列占用。
 当列属于 TableRow 时才可以进行折叠/恢复操作。
 
  //调用该方法会请求布局操作。
相关XML属性   
 android:collapseColumns
参数   
 columnIndex  列索引
isCollapsed    
 折叠时为true;否则为false

?

publicvoid setColumnShrinkable (intcolumnIndex, booleanisShrinkable)
//设置指定列是否可收缩。当行太宽时,表格可以收缩该列以提供更多空间。
//调用该方法会请求布局操作。
//相关XML属性   
 android:shrinkColumns
//参数   
 columnIndex  列索引
//        
 isShrinkable    如果列可以收缩,设为真;否则设为假。默认是假。
publicvoid setColumnStretchable (intcolumnIndex, booleanisStretchable)
//设置指定列是否可拉伸。可拉伸时,列会尽可能多的占用行中的可用空间。
//调用该方法会请求布局操作。
//相关XML属性   
 android:stretchColumns
//参数   
 columnIndex  列索引
//        
 isStretchable 如果列可以拉伸,设为真;否则设为假.默认是假
publicvoid setOnHierarchyChangeListener (ViewGroup.OnHierarchyChangeListener listener)
注册当从视图中添加或移除子视图时发生的回调函数。
参数
 
  listener 
 层次结构变更时执行的回调函数
publicvoid setShrinkAllColumns (booleanshrinkAllColumns)
 
  标记所有列为可收缩的便利的方法。
 
  相关XML属性  
 android:shrinkColumns
  参数  
 shrinkAllColumns    如果标记所有列为可收缩时为true
 
 publicvoid setStretchAllColumns (booleanstretchAllColumns)


标记所有列为可拉伸的便利的方法。
相关XML属性  
 android:stretchColumns
参数   
 stretchAllColumns           如果标记所有列为可拉伸时为true

?


?

 三:TableLayout实现边框

  为了醒目,需要给TableLayout设定边框来区分不同的表格中的信息:

主要是通过设定TableLayout、TableRow 、View颜色反衬出边框的颜色。

例如TableLayout的android:layout_margin="2dip"设置为这个数字 ,在指定一个背景色android:background="#00ff00",它里面的颜色也是这样子的设置,就可以呈现出带边框的效果了。

 (2)关于分割线: 
我们可以通过在两个TableRow之间添加一个548e7793df275d156d270cdda504ba19,并设置它的layout_height="1dip"和background来解决。但这样就多产生了一个View,有点浪费。 
其实还可以设置TableRow的bottomMargin=1来产生一条分割线。 
  3.滚动:

关于TableLayout和HorizontalScrollView一起使用时的宽度问题 
我有一个TableLayout,它的内容是动态生成的。我遇到了下面的问题: 
当动态生成的一行的内容太长时,靠右边的内容会被遮住了。于是我想要这个TableLayout在横向上可以滚动。 
解决的办法是,用HorizontalScrollView包装TableLayout,这样,当内容很长时,就会出现横向滚动条。 
像这样: 

?>
<HorizontalScrollView 
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent"> 
  <TableLayout 
  android:id="@+id/tl_forcast_result" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:padding="10dp">   
  </TableLayout> 
 </HorizontalScrollView>

?

  但此时又出现了另一个问题,加上HorizontalScrollView后,虽然我已经设了TableLayout的宽度是fill_parent。但当内容较少时,TableLayout还是根据内容自适应宽度,不能满屏。 
此时,需要设置一个属性就能解决问题了。设置HorizontalScrollView的android:fillViewport="true"。也就是设置是否将HorizontalScrollView的内容宽度拉伸以适应视口(viewport)

위 내용은 CSS: 테이블 레이아웃 테이블 레이아웃 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.