当前位置: 首页 > news >正文

android GridLayout 布局详解,并举例

GridLayout 是 Android 中的一个布局容器,它允许你在一个二维网格中排列子视图。你可以指定网格的行数和列数,或者让 GridLayout 自动计算它们。每个子视图都可以占据一个或多个网格单元格。GridLayout 非常适合在需要创建规则网格的应用中使用,如棋盘游戏、计算器或任何需要整齐排列元素的界面。

GridLayout 的基本属性

  1. android:rowCount:指定网格的行数。
  2. android:columnCount:指定网格的列数。
  3. android:orientation:这不是 GridLayout 的直接属性,但通常与 GridLayout 一起使用。它决定了子视图的添加顺序(水平或垂直)。
  4. android:padding 和 android:layout_margin:控制网格的内边距和外边距。
  5. android:columnOrderPreserved(从 API 级别 21 开始):如果设置为 true,则列顺序在屏幕旋转时保持不变。

GridLayout 的子视图属性

  1. layout_row 和 layout_column:指定子视图在网格中的起始行和列。
  2. layout_columnSpan 和 layout_rowSpan:指定子视图跨越的列数和行数。
  3. layout_gravity:与 LinearLayout 中的 gravity 类似,但它仅影响子视图在其网格单元格内的对齐方式。

示例

下面是一个使用 GridLayout 的简单示例,它创建了一个 3x3 的网格,并在每个单元格中放置了一个按钮:

<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:rowCount="3"
android:columnCount="3">
<!-- 动态添加子视图,或者你也可以直接在 XML 中添加 -->
<!-- 例如:-->
<!-- <Button android:text="1" android:layout_row="0" android:layout_column="0" /> -->
</GridLayout>

在 Activity 或 Fragment 中,你可以动态地向 GridLayout 添加子视图:

GridLayout gridLayout = findViewById(R.id.your_grid_layout_id); // 假设你已经在 XML 中为其设置了 ID
for (int i = 0; i < 9; i++) {
Button button = new Button(this);
button.setText(String.valueOf(i + 1)); // 设置按钮文本
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.rowSpec = GridLayout.spec(i / 3); // 计算行号
params.columnSpec = GridLayout.spec(i % 3); // 计算列号
button.setLayoutParams(params);
gridLayout.addView(button); // 将按钮添加到 GridLayout 中
}

这个示例创建了一个 3x3 的网格,并在每个单元格中放置了一个带有数字的按钮。注意,我们在循环中计算了每个按钮应该放置的行和列。

http://www.lryc.cn/news/352631.html

相关文章:

  • el-transfer和el-tree进行结合搞一个树形穿梭框
  • 编一个自己的万年历
  • Golang gin框架中间件c.JSON返回结果后终止返回
  • 码蹄集部分题目(2024OJ赛16期;单调栈集训+差分集训)
  • 安卓玩机搞机技巧综合资源----自己手机制作证件照的几种方法 免费制作证件照
  • 揭秘循环购模式:消费返利新玩法,引领电商新潮流
  • 【制作100个unity游戏之26】unity2d横版卷轴动作类游13(附带项目源码)
  • Golang使用HTTP框架zdpgo_resty实现文件下载
  • 提取COCO 数据集的部分类
  • 高刚性滚柱直线导轨有哪些优势?
  • KNN及降维预处理方法LDA|PCA|MDS
  • 论文精读-SwinIR Image Restoration Using Swin Transformer
  • 解释Spring Bean的生命周期
  • CTF网络安全大赛web题目:字符?正则?
  • Linux——Docker容器虚拟化平台
  • Transformer详解(3)-多头自注意力机制
  • 运用HTML、CSS设计Web网页——“西式甜品网”图例及代码
  • 大语言模型是通用人工智能的实现路径吗?【文末有福利】
  • c语言——宏offsetof
  • C#串口通信-串口相关参数介绍
  • 节省时间与精力:用BAT文件和任务计划器自动执行重复任务
  • 一年前的Java作业,模拟游戏玩家战斗
  • C++ 学习 关于引用
  • BERT ner 微调参数的选择
  • 【MySQL精通之路】系统变量-持久化系统变量
  • fdk-aac将aac格式转为pcm数据
  • 【C语言深度解剖】(15):动态内存管理和柔性数组
  • 力扣每日一题 5/25
  • (1)无线电失控保护(一)
  • 基于51单片机的多功能万年历温度计—可显示农历