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


    往期文章分享

    👉关于作者

    众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
    专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
    有什么需要欢迎私我,交流群让学习不再孤单

    在这里插入图片描述

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

    👉实践过程

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

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

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

    😜GridLayout本身属性

    • android:columnCount:设置她的最大列数
    • android:rowCount:设置她的最大行数
    • android:alignmentMode:alignBounds-对齐子View边界 alignMargins-对齐子View内容
    • android:orientation:设置她的GridLayout中子View的布局方向
    • android:columnOrderPreserved:使列边界显示的顺序和列索引的顺序相同,默认值是true
    • android:rowOrderPreserved :使行边界显示的顺序和行索引的顺序相同,默认值是true
    • android: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之后加入的,代表行权重

    😜示例

    计算器布局是我们最常使用的
    在这里插入图片描述

    <GridLayout
            android: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">
            <TextView
                android:layout_rowWeight="3"
                android:layout_columnSpan="4"
                android:layout_columnWeight="1"
                android:gravity="right|bottom"
                android:text="0"
                android:textSize="20sp" />
            <TextView
                android: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" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="<-"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="/"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="*"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="7"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="8"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="9"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text=""
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="4"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="5"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="6"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="+"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="1"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="2"
                android:textSize="20sp" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="3"
                android:textSize="20sp" />
            <TextView
                android: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" />
            <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="."
                android:textSize="20sp" />
             <TextView
                android:layout_rowWeight="1"
                android:layout_columnWeight="1"
                android:layout_margin="1dp"
                android:background="#ffffff"
                android:gravity="center"
                android:text="%"
                android:textSize="20sp" />
    GridLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172

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

    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中的布局view
            gridLayout.columnCount = 4
            gridLayout.rowCount = 6
            for (i in mStringArray.indices) {
                val textView = TextView(this)
                val params = GridLayout.LayoutParams()
                params.width = 0
                params.height = 0
                if (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.CENTER
                    params.setMargins(2, 2, 2, 2)
                }
                textView.text = mStringArray[i]
                gridLayout.addView(textView, params)
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    所以总结:

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

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

    👉其他

    📢作者:小空和小芝中的小空
    📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
    📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

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

  • 相关阅读:
    S环形避障装置研究与设计(solidworks)
    Redis 常见问题
    计算机毕业设计之java+springcloud基于vue的智慧养老平台-老人信息管理-敬老院管理系统
    基于Python Django的公务员考试信息管理系统
    vue项目 npm run build 打包项目防止浏览器缓存
    使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略
    MoveIt的【Use Cartesian Path】选项及computeCartesianPath函数
    无人机航迹规划:五种最新智能优化算法(KOA、COA、LSO、GRO、LO)求解无人机路径规划MATLAB
    【智能电网随机调度】智能电网的双层模型时间尺度随机优化调度(Matlab代码实现)
    rman 如何记录日志及如何对rman命令进行debug
  • 原文地址:https://blog.csdn.net/qq_27489007/article/details/126845808