700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android修行手册 - GridLayout复习和计算器示例

Android修行手册 - GridLayout复习和计算器示例

时间:2023-12-18 06:57:14

相关推荐

Android修行手册 - GridLayout复习和计算器示例

往期文章分享点击跳转=>《导航贴》- Unity手册,系统实战学习点击跳转=>《导航贴》- Android手册,重温移动开发

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

有什么需要欢迎私我,交流群让学习不再孤单

本文约8千字,新手阅读需要7分钟,复习需要3分钟收藏随时查阅不再迷路

文章目录

👉关于作者👉实践过程😜GridLayout本身属性😜GridLayout子View属性😜示例 👉其他

👉实践过程

Hello,大家好啊,今天小空带大家学习GridLayout。改天我们在说说GirdView。

她在我们项目中使用的概率不大,但我们也要知道,有时候遇见特殊需求保不齐能用上,节省了你自己自定义的时间。

顾名思义该控件是网格布局,内部的子View是按照你设定好的行列数来布局的。

😜GridLayout本身属性

android:columnCount:设置她的最大列数android:rowCount:设置她的最大行数android:alignmentMode:alignBounds-对齐子View边界 alignMargins-对齐子View内容android:orientation:设置她的GridLayout中子View的布局方向android:columnOrderPreserved:使列边界显示的顺序和列索引的顺序相同,默认值是trueandroid:rowOrderPreserved:使行边界显示的顺序和行索引的顺序相同,默认值是trueandroid:useDefaultMargins:没有指定视图的布局参数时使用默认的边距,默认值值是false

😜GridLayout子View属性

android:layout_column:代表该内容在GridLayout的第几列显示android:layout_row:代表该内容在GridLayout的第几行显示android:layout_columnSpan:代表该内容占据GridLayout的几列android:layout_rowSpan:代表该内容占据GridLayout的几行android:layout_gravity:指定该View在容器中的所在位置,常用属性了android:layout_columnWeight:记得应该是API之后加入的,代表列权重android:layout_rowWeigh:记得应该是API之后加入的,代表行权重

😜示例

计算器布局是我们最常使用的

<GridLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:alignmentMode="alignBounds"android:background="#ece7e7"android:columnCount="4"android:orientation="horizontal"android:rowCount="5"android:useDefaultMargins="false"><TextViewandroid:layout_rowWeight="3"android:layout_columnSpan="4"android:layout_columnWeight="1"android:gravity="right|bottom"android:text="0"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="AC"android:textColor="#FF3700B3"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="<-"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="/"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="*"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="7"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="8"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="9"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="—"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="4"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="5"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="6"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="+"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="1"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="2"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="3"android:textSize="20sp" /><TextViewandroid:layout_rowSpan="2"android:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#FF3700B3"android:gravity="center"android:text="="android:textColor="#ffffff"android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="0"android:textSize="20sp" /<TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="."android:textSize="20sp" /><TextViewandroid:layout_rowWeight="1"android:layout_columnWeight="1"android:layout_margin="1dp"android:background="#ffffff"android:gravity="center"android:text="%"android:textSize="20sp" /></GridLayout>

除了静态布局,有时候我们还需要动态添加的需求,还是拿计算器举例子

class TempActivity : AppCompatActivity() {private val mStringArray = arrayOf("0", "AC", "<-", "/", "*", "7", "8", "9", "—", "4", "5", "6", "+", "1", "2", "3", "=", "%", "0", ".")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_test)// 6行 4列 gridLayout你xml中的布局viewgridLayout.columnCount = 4gridLayout.rowCount = 6for (i in mStringArray.indices) {val textView = TextView(this)val params = GridLayout.LayoutParams()params.width = 0params.height = 0if (i == 0) {params.rowSpec = GridLayout.spec(0, 1, 3f)params.columnSpec = GridLayout.spec(0, 4, 1f)textView.gravity = Gravity.BOTTOM or Gravity.RIGHT} else {params.rowSpec = GridLayout.spec((i + 3) / 4, 1f)params.columnSpec = GridLayout.spec((i + 3) % 4, 1f)textView.setBackgroundColor(Color.WHITE)if ("AC" == mStringArray[i]) {textView.setTextColor(Color.parseColor("#FF3700B3"))}if ("=" == mStringArray[i]) {textView.setBackgroundColor(Color.parseColor("#FF3700B3"))textView.setTextColor(Color.WHITE)params.rowSpec = GridLayout.spec((i + 3) / 4, 2, 1f)}textView.gravity = Gravity.CENTERparams.setMargins(2, 2, 2, 2)}textView.text = mStringArray[i]gridLayout.addView(textView, params)}}}

所以总结:

自定义行数和列数,规范表格布局

随意设置子View占行几列或几行,也能设置子View在第几行第几列

👉其他

📢作者:小空和小芝中的小空

📢转载说明-务必注明来源:https://zhima./

📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。