任务发布网站建设,wordpress主页透明,温州外贸网站制作,网站的结构布局学完了 Android 两个经典布局#xff0c;是不是觉得已经可以应对大多数场景了#xff1f;我记得当我学完 LinearLayout 和 RelativeLayout 之后#xff0c;我觉得 UI 布局已经可以出师了#xff0c;在本人从事了多年的 Android 研究之后#xff0c;可以很负责任的告诉你是不是觉得已经可以应对大多数场景了我记得当我学完 LinearLayout 和 RelativeLayout 之后我觉得 UI 布局已经可以出师了在本人从事了多年的 Android 研究之后可以很负责任的告诉你的确可以出师了。
大多数场景都可以通过这两个布局方式组合出来不过光靠这两招出师可能会走不少弯路因为 Google 还为我们提供了很多实用的 Layout比如今天要学的 TableLayout它是一种表格样式在很多 App 里面都会用到。当然你完全可以用 LinearLayout RelativeLayout 实现不过学完本节你就会发现用 TableLayout 实现表格布局是多么简单的一件事情 1. TableLayout 的特性
和其他 Layout 一样TableLayout 也派生自 ViewGroup它可以将内部的 View 或者 Layout 整齐的排成几行几列按照表格的形式摆放。我用使用TableRow/标签标识一行在标签内的 View 或者 Layout 都将摆放在同一行中。 注看到行标签大家可以想到TableLayout 是不需要注明表格列的数量的因为 Android 系统会自动根据我们声明在TableRow/中的元素推算出最终表格的列数 2. 关键属性的用法
刚刚提到我们用TableRow/来声明表格的一行而很多属性都是作用于TableRow/内部 View 的这个也是和其他 Layout 不太一样的地方需要注意下面就分别介绍一下 TableLayout 中这两类属性。 2.1 作用于 TableLayout 的属性
android:stretchColumns 当表格的某些列宽度比较窄的时候你可以通过给 TableLayout 设置stretchColumns属性来设置某些列向行方向伸展最多可占据一整行。该属性的参数直接填入需要拉伸的列的序号即可从 0 开始另外支持多输入各个列序号通过“”分隔。如果需要对所有列拉伸可以直接用“*”表示如下 !-- 针对所有列做拉伸 --
android:stretchColumns*!-- 针对第1列、4列、13列做拉伸 --
android:stretchColumns0,3,12android:shrinkColumns 这是与 stretchColumns 相对的属性如果某些列的所占的空间太大那么可以通过该属性设置可收缩的列。当该列子控件的内容太多比如 TextView 中文本太长已经挤满所在行那么该子控件的内容将往列方向显示TextView 折行显示。
注虽然从名字上讲一个是扩展一个是收缩但二者并不冲突。一个列可以同时具备stretchColumns及shrinkColumns属性。若此那么当该列的内容过多时将“多行”显示其内容。当然这里不是真正的多行而是系统根据需要自动调节该行的 layout_height。
android:collapseColumns 隐藏部分列的内容使用方法和上述两个属性一样直接填入列的序号即可支持多个列。
这 3 个属性的用法示例如下
?xml version1.0 encodingutf-8?
TableLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:shrinkColumns0android:stretchColumns1,2android:collapseColumns3tools:context.MainActivityTableRowTextViewandroid:idid/centerandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#EE0D0Dandroid:textcolumn1, Emercy Android Studyandroid:textSize20sp /TextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#DBEE14android:textcolumn2android:textSize20sp /TextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#7492CCandroid:textcolumn3android:textSize20sp /TextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#09A234android:textcolumn4android:textSize20sp //TableRowTableRowTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#FF80ABandroid:textrow2android:textSize20sp //TableRow
/TableLayout示例中定义另一个两行的表格根据元素最多的行可以计算出表格的列数然后设置了shrinkColumns为第一行stretchColumns为第二、三行最后collapseColumns为最后一行最终显示的效果如下 2.2 作用于 TableRow 内部 View 的属性
android:layout_span 通常情况下一个 View 只会占据一列的宽度但是如果对某个 View 设置了layout_spann那么该 View 会超出所在列占据 n 个列。android:layout_column 设置 View 在第几列显示。
这两个属性比较好理解我们直接在上面的例子中在第二行加上这两个参数
TableRowTextViewandroid:layout_column1android:layout_span3android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#FF80ABandroid:textrow2android:textSize20sp //TableRow设置当前 TextView 在第 2 列显示并占 3 列的宽度效果如下 3. TableLayout 的注意点
可以看到用 TableLayout 去完成一个表格样式是非常容易的关于 TableLayout 有 3 点需要注意
TableRow/标签是不需要设置layout_width和layout_height的系统会自动给这两个属性分别赋值为match_parent及wrap_content。也就是说我们的每一行一定是占满 TableLayout 的宽度而高度则由内部的 View 来决定TableLayout 表格的列数由元素最多的TableRow/的元素数量决定表格每一列的宽度就是该列最大的 View 宽度。 4. 小结
TableLayout 的功能比较简单属性也很好理解就是用来完成一个列表形式的布局虽然形式比较单一但是在相应场景中会有事半功倍的效果相信在学会 LinearLayout 和 RelativeLayout 之后的你应该能够完全掌握。
注大家学完之后可以思考一下本节中的所有 UI 样式如果用 LinearLayout 和 RelativeLayout 如何实现