关于GridLayout的使用:
1. 首先为容器(Composite,Group…)设置GridLayout:
//GridLayout两个最重要的属性都可以在构造函数里设置,2代表列数;true代表是否各 //列均宽
GridLayout gl = new GridLayout(2,true);
composite.setLayout(gl);
2. 接下来就可以按行逐列添加控件进去
Label label1 = new Label(composite,SWT.NONE);
Text text1 = new Text(composite,SWT.BORDER);
Label label2 = new Label(composite,SWT.NONE);
Text text2 = new Text(composite,SWT.BORDER);
这样就完成了整体的基本布局。
3. 最后,要美化和具体控制每个控件,就需要为每个控件设置GridData了
a) GridData是专门用来和GridLayout配合指定每个控件的具体行为
b) GridData看起来比较复杂,设置参数的方式很多。但是如果看一下GridData的源码就会发现,实质上,我们需要关注并设定的只有horizontalSpan,verticalSpan,grabExcessHorizontalSpace,grabExcessVerticalSpace,verticalAlignment,horizontalAlignment,widthHint,heightHint;这些从字面就可以看出他们的意思,下面分别介绍
i. horizontalSpan和verticalSpan,这两个用来指定当前控件占据的水平和垂直格数,默认值为1。要想设置这两个参数,必须声明一个GridData变量:
GridData gd = new GridData();
gd.horizontalSpan = 2;
label2.setLayoutdata(gd);
这样这个label就占据两列了.
ii. grabExcessHorizontalSpace和grabExcessVerticalSpace,这两个参数用来指定控件所在单元格是否填充的水平剩余空间和竖直剩余空间,默认值为false。这两个参数可以在构造函数中设置:
label2.setLayoutdata(new GridData(GridData.GRAB_HORIZONTAL));
iii. verticalAlignment和horizontalAlignment用来指定控件的对齐方式。有四个值:BEGINNING,CENTER,END和FILL。值得一提的是FILL,用来指定控件是否填满单元格的剩余空间。这两个参数也可以在构造函数里指定
label2.setLayoutdata(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
下面这种设置方式效果也是一样的
GridData gd = new GridData();
gd.horizontalAlignment= true;
label2.setLayoutdata(gd);
iv. widthHint和heightHint用来指定控件所在单元格的最小宽度和最小高度,默认值是SWT.DEFAULT,也就是不指定。这两个必须通过一个有名的GridData来设置:
GridData gd = new GridData();
gd.widthHint= 100;
label2.setLayoutdata(gd);
v. GridData提供了很多常量,通过他们的名字再结合上面的说明,很容易就知道他们究竟是设置什么的:
// Alignment constants.
public static final int BEGINNING = 1;
public static final int CENTER = 2;
public static final int END = 3;
public static final int FILL = 4;
// Style constants
public static final int VERTICAL_ALIGN_BEGINNING = 1 << 1;
public static final int VERTICAL_ALIGN_CENTER = 1 << 2;
public static final int VERTICAL_ALIGN_END = 1 << 3;
public static final int VERTICAL_ALIGN_FILL = 1 << 4;
public static final int HORIZONTAL_ALIGN_BEGINNING = 1 << 5;
public static final int HORIZONTAL_ALIGN_CENTER = 1 << 6;
public static final int HORIZONTAL_ALIGN_END = 1 << 7;
public static final int HORIZONTAL_ALIGN_FILL = 1 << 8;
public static final int GRAB_HORIZONTAL = 1 << 9;
public static final int GRAB_VERTICAL = 1 << 10;
// Style convenience constants
/**
* FILL_VERTICAL = VERTICAL_ALIGN_FILL | GRAB_VERTICAL
*/
public static final int FILL_VERTICAL = VERTICAL_ALIGN_FILL | GRAB_VERTICAL;
/**
* FILL_HORIZONTAL = HORIZONTAL_ALIGN_FILL | GRAB_HORIZONTAL
*/
public static final int FILL_HORIZONTAL = HORIZONTAL_ALIGN_FILL | GRAB_HORIZONTAL;
/**
* FILL_BOTH = FILL_VERTICAL | FILL_HORIZONTAL
*/
public static final int FILL_BOTH = FILL_VERTICAL | FILL_HORIZONTAL;
分享到:
相关推荐
总之,"GridLayout使用Demo(兼容4.0以下版本)"是一个帮助开发者在低版本Android系统上实现GridLayout功能的示例项目。它可能包含导入第三方库、创建GridLayout对象、设置子视图的布局参数等步骤,为开发者提供了一种...
GridLayout 是一种 Java Swing 库提供的布局管理器,用于在容器中将组件排列为规则的行列网格。 GridLayout 的特点如下: 组件按照行和列的顺序进行排列。 所有的单元格大小相等,会根据容器的大小自动调整。 可以...
最后,为了在API 21以下的设备上使用`GridLayout`,需要在代码中初始化`GridLayout`,通常在`onCreate()`方法中: ```java GridLayout gridLayout = (GridLayout) findViewById(R.id.grid_layout); if (Build....
使用`GridLayout`后,容器会被划分成一系列大小相等的矩形区域,每个区域中仅能放置一个组件。这种方式特别适合于那些需要整齐、对称布局的应用场景。 #### 二、基本概念与特点 1. **网格结构**:`GridLayout`将...
在本教程中,我们将深入探讨如何使用`GridLayout`设计版面。 1. **GridLayout的构造函数** `GridLayout`有三个构造函数,分别是: - `GridLayout(int rows, int cols)`:创建一个具有指定行数和列数的网格。 - `...
然而,在GridLayout中直接使用RadioButton并不能自动实现单选功能,因为GridLayout本身并不具备处理这种交互的能力。为了模仿RadioButton的单选效果,我们需要自定义一些逻辑。以下是一种实现方法: 1. **创建...
- 在`Calculator`类的`init()`方法中,如果使用`GridLayout`,首先应该实例化`GridLayout`对象,并将其设置为容器的布局管理器。例如: ```java setLayout(new GridLayout(4, 3)); ``` 这将创建一个4行3列的...
为了在这些早期版本的Android系统上使用GridLayout,开发者需要采取一些额外的步骤。 1. **GridLayout的基本概念**:GridLayout是一种二维布局,它将子视图组织成行和列。每个子视图都可以占据一个或多个单元格,...
`license.txt`文件则包含了关于这些代码的许可信息,对于开源软件,这通常是MIT、GPL或其他类型的开源许可证,规定了代码的使用、修改和分发的条件。 总的来说,`matlab开发-GridLayout`这个主题涵盖了MATLAB GUI...
3. **左上角显示运算结果**:通常,我们可以使用TextView来展示运算结果,将其放在GridLayout的第一行第一列,并设置合适的大小,使其占据足够空间显示结果。 4. **数字键和运算键合理放置**:根据标准计算器的设计...
- `mainwindow.ui`和`gridlayout.ui`:使用Qt Designer设计的UI界面,以XML格式存储控件的布局和属性,可以通过`uic`工具转换为C++代码。 5. **进一步的优化建议**: - 可以添加事件过滤器以监听控件的添加和删除...
在本详细解析中,我们将深入探讨GridLayout的使用方法、特性以及如何在实际开发中有效地利用它。 首先,GridLayout的核心在于它的网格结构。每个控件在GridLayout中占据一个或多个单元格,这些单元格通过行和列进行...
在“Android使用GridLayout布局完成图片放大器项目的代码清单”中,我们可以看到一个简单的案例,该案例展示了如何利用GridLayout来实现一个图片查看器,用户点击不同的按钮可以查看相应的图片。 首先,我们从`...
下面我们将深入探讨GridLayout的基本概念、使用方法以及示例图片中的应用。 一、GridLayout概述 GridLayout是一个二维布局,它将容器划分为相等大小的行和列。每个子视图(View)都会占据一个或多个单元格,这些...
然而,了解和熟练使用GridLayout对于初学者来说是基础且必要的,因为它可以帮助理解布局管理的基本原理,为学习其他更复杂的布局打下坚实的基础。 在提供的压缩包文件"GridLayout"中,可能包含了一些示例代码或XML...
本篇文档主要介绍了如何使用GridLayout布局来实现一个图片放大器的功能,这对于理解和掌握Android UI设计以及事件处理有着重要的实践意义。 首先,我们要了解GridLayout的基本用法。GridLayout继承自ViewGroup,它...
android-support-v7-gridlayout.jar
在本教程中,我们将深入探讨如何有效地使用GridLayout来创建复杂的用户界面,尤其是通过一个实例——计算器界面的开发,来加深理解。 ### GridLayout的特点 GridLayout与TableLayout相似,但比TableLayout更为灵活...
通过学习“021集-FrameLayout和GridLayout”的视频教材,你将能够熟练掌握这两种布局的使用方法,理解它们的工作原理,并能在实际项目中灵活运用。无论是初学者还是经验丰富的开发者,都能从中受益,提升Android UI...
同时,GridLayout还支持使用`android:orientation`属性来改变行和列的排列方向,但此属性在GridLayout中默认为垂直方向,通常不需要额外设置。 此外,每个子组件也可以有自己的属性,如`android:layout_column`和`...