TableLayout
在某些UI设计中,也称为GridLayout。我们根据行和列的排列来对 widget进行布局。整个逻辑和我们在HTML中写table的方式相似,定义表格然后以行为单位,然后在定制单元表格,即每一个widget,如果 widget需占用多个单元采用android:layout_span="num"的方式。
第一个表格单元为(0,0)。widget是按顺序放入表格的,如果我们希望中间 跳过几个表格单元,可以指定widget具体在哪一列,例如android:layout_column="2",即放在第3列,那么下一个widget 将是第4列或者下一行。需要注意的是,和Table一样,这些表格的大小并不一定是一样的,将根据widget的natrual大小。这可能和我们的期望 不一样。下面是一个例子:
<?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的值为一个column的列号,注意列号是从0还是,如果有多个列号,用逗号作为分割。这些列将尽可能填满 剩余的空间,这对于小于有效空间的情况非常有用。如果不设置,则采用widget的natrual的大小,将不会填满横排剩余的空间。在程序中可以是 setColumnStretchable()—>
android:stretchColumns="1" >
<TableRow>
<TextView android:text="URL:" />
<!--如果我们不设置 android:stretchColumns="1",EditText这里是没有内容,因此它的natrual的width为0,即看不到。当我们设 置row 1的两个button填入 column2和3,那么column 2和3将为适配为button的大小,而column1为1,这会导致如图所示的画面 -->
<EditText android:id="@+id/entry"
android:layout_span="3" />
</TableRow>
<TableRow>
<Button android:id="@+id/cancel"
android:layout_column="2"
android:text="Cancel" />
<Button android:id="@+id/ok"
android:text="Ok" />
</TableRow>
</TableLayout>
android:stretchColumns:如同将上面例子。
android:shrinkColumns,将尽可能压缩column空间,例如在上面的例子在Row0中我们加入:
<TextView android:text="1234567899" />
<TextView android:text="hello my friend!" android:textColor="#0000ff" />
<TextView android:text="1234567899" />
运行时如上左图,最后一列看不到完整,我们可以在TableLayout中加入属性:android:shrinkColumns="4,5",这样就可以如第二个图。在java code中可以使用setColumnShrinkable()。
android:collapseColumns: 可以将某些列invisible,可用于向用户显示他们需要的或者重要的内容,而隐藏次要的,在java code中可以使用setColumnCollapsed()。我们将android:collapseColumns="4,5"替换了 shrinkColumns的属性,效果如右图。
在TableRow之间可以放入widget,这时TableLayout就如同数值排放的LinearLayout的行为,并自动的将width设置为fill_parent。
ScrollView
顾名思义就是可以滚屏。ScrollView的处理很简单:
<ScrollView xmlns:android... android:layout_width... android:layout_height...>
//里面可以是其他Layout的布局,例如TableLayout,但是我们尝试了在一个ScrollView中又两个TableLayout出现错误,目前不太清楚为什么。
</ScrollView>
需要注意的是ScrollView不提供双向(横+竖)的scroll,只提供单向的。
分享到:
相关推荐
本篇笔记主要关注在Activity中如何使用TableLayout和ScrollView这两种布局组件。 TableLayout是Android中的一个布局容器,它允许开发者按照表格的形式组织界面元素。TableLayout由TableRow组成,每个TableRow则包含...
- 提到了一个具体的XML布局文件示例,其中包含ScrollView和GridView,这表明了如何在XML中定义滚动视图和网格视图。 从上述内容可以看出,文档涵盖了Android开发中的界面布局、视图组件、数据存储、网络通信、权限...
- 在TableLayout-master这个压缩包中,可能包含了项目的源代码,包括主Activity、布局XML文件和可能的数据模型类。通过分析代码,我们可以学习如何根据数据动态创建和更新TableLayout的内容。 总的来说,...
Android提供了丰富的布局选项,包括但不限于LinearLayout、RelativeLayout、TableLayout和AbsoluteLayout等。 - **概述**:UI布局决定了应用程序用户界面的组织结构和外观设计。 - **线性布局**:LinearLayout是最...
本文从基础入手,介绍了Android UI布局的概念和技术,包括Activity与UI的关系、View和ViewGroup的作用以及常见的ViewGroup类型。此外,还通过示例说明了如何使用XML文件和Java代码来构建UI。希望这些内容能够帮助...
- **TableLayout**:以表格形式排列子View。 - **AbsoluteLayout**:允许精确地设置子View的位置。 - **ScrollView**:为包含子View的滚动区域。 ##### 2. 构建复杂布局 - 复杂的UI通常需要多种布局类型的组合。...
- 在`<activity>`标签中添加`<intent-filter>`来指定Action和Category。 6. **启动Activity** - 使用`Intent`对象启动一个新的Activity。 - 调用`startActivity()`方法完成跳转。 7. **启动Activity并返回结果*...
TableLayout类似于HTML中的表格,可以方便地创建具有行和列的布局结构。 **3.5 AbsoluteLayout** AbsoluteLayout允许开发者精确地控制子视图的位置,但是不推荐使用,因为它不够灵活且难以维护。 #### 四、...
- **ScrollView:** 支持滚动的容器。 **3. 适配器模式** - **Adapter:** Adapter 是一种模式,用于将数据绑定到 UI 控件中。 - **ListView、GridView:** 显示列表或网格形式的数据。 - **Spinner:** 下拉...
- **Activity**:Activity是Android应用的主要组件,用于用户交互。它有明确的生命周期,包括创建、运行、暂停、停止和销毁等阶段。 - **Intent Receiver**:用于接收和处理系统或应用程序发出的广播消息。 - **...
- **表格布局(TableLayout)**:创建表格布局,可以定义行和列。 - **网格布局(GridLayout)**:为子视图提供网格化的布局方式。 ##### 2.2 上下文菜单、选项菜单和子菜单 - **上下文菜单(Context Menu)**:用户长按...
4.2.18 卷轴视图(ScrollView) 4.2.19 进度条(ProgressBar) 4.2.20 拖动条(SeekBar) 4.2.21 状态栏提示(Notification、NotificationManager) 4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性...