用GridLayout实现计算器的布局

GridLayout是一个表格视图,我们一般定义它的列数和行数来设置好这个控件。
下面的布局文件先定义了一个TextView和一个Button,设置他们的属性为横跨4列。这样就可以独自占据一行了。然后我们用代码来放入其他的子元素,其实就是些Button。
布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}"
xmlns:app="http://schemas.android.com/apk/res/com.kale.gridlayout"> <!-- 六行四列 -->
<android.support.v7.widget.GridLayout
android:id="@+id/root_gridLayout_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rowCount="6"
app:columnCount="4"> <TextView
android:layout_width="match_parent"
android:layout_height="100dp"
app:layout_columnSpan="4"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" /> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_gravity="center_horizontal|top"
app:layout_columnSpan="4"
android:text="Button" />
</android.support.v7.widget.GridLayout> </RelativeLayout>
MainActivity.java
package com.kale.gridlayout; import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.GridLayout;
import android.view.Gravity;
import android.widget.Button; public class MainActivity extends Activity {
String [] chars = new String[]{
"7","8","9","÷",
"4","5","6","x",
"1","2","3","-",
".","0","=","+"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); GridLayout gLayout = (GridLayout)findViewById(R.id.root_gridLayout_id);
for (int i = 0; i < chars.length; i++) {
Button bt = new Button(this);
bt.setText(chars[i]);
bt.setTextSize(40); //指定该组件所占的行
GridLayout.Spec rowSpec = GridLayout.spec(i/4 + 2);
//指定该组件所占的列
GridLayout.Spec columnSpec = GridLayout.spec(i % 4);
//按照设置好的行和列来建立对象
GridLayout.LayoutParams params = new GridLayout.LayoutParams(rowSpec,columnSpec);
//指定该组件占满父控件
params.setGravity(Gravity.FILL);
gLayout.addView(bt,params);
} }
}
用GridLayout实现计算器的布局的更多相关文章
- Android 布局之GridLayout
Android 布局之GridLayout 1 GridLayout简介 GridLayout是Android4.0新提供的网格矩阵形式的布局控件. GridLayout的继承关系如下:java.la ...
- Android 布局之GridLayout(转载)
转载:http://www.cnblogs.com/skywang12345/p/3154150.html 1 GridLayout简介 GridLayout是Android4.0新提供的网格矩阵形式 ...
- 关于SWT中的GridLayout布局方式
GridLayout 布局的功能非常强大,也是笔者常用的一种布局方式.GridLayout是网格式布局,它把父组件分成一个表格,默认情况下每个子组件占据一个单元格的空间,每个子组件按添加到父组件的顺序 ...
- android GridLayout布局
android4.0版本后新增了一个GridLayout,它使用虚细线将布局划分为行.列和单元格,也支持一个控件在行.列上都有交错排列,其实用方法和LinearLayout,Relativelayou ...
- 每天2个android小例子----简单计算器源代码
通过Android4.0 网格布局GridLayout来实现一个简单的计算器界面布局 package com.android.xiong.gridlayoutTest; import java.mat ...
- Android开发UI之GridLayout的使用
1.GridLayout 官网截图 GridLayout包含的属性如下: android:alignmentMode属性说明:当设置alignMargins,使视图的外边界之间进行校准.可以取以下值: ...
- Android之一个简单计算器源代码
通过Android4.0 网格布局GridLayout来实现一个简单的计算器界面布局 源码如下(欢迎大家指导 批评 ) package com.android.xiong.gridlayoutTe ...
- Android 布局管理器
为了更好地管理Android应用程序的用户界面组件,Android它提供了一个布局管理.通过使用布局管理,Android具有良好的平台无关的图形用户界面应用程序. 平时,推荐布局管理器来管理分布式组件 ...
- Android4.0新增的网格布局
网格布局由GridLayout代表,它是Android 4.0新增的布局管理器,因此需要在Android 4.0 之后的版本中才能使用该布局管理器.如果希望在更早的Android平台上使用该布局管理器 ...
随机推荐
- H5视频播放器属性与API控件,以及对程序的解释
一:理论 1.视频播放器的格式介绍 视频主要有三部分组成:视频.音频.编码格式 视频格式:avi.rmb.wmv.mpeg4.ogg.webm 2.H5的标签video的简单使用 <video ...
- 038 spark中使用sparksql对日志进行分析(属于小案例)
一:使用sparksql开发 1.sparksql开发的两种方式 HQL:SQL语句开发 eq : sqlContext.sql("xxxx") DSL : sparkSql中Da ...
- 2019 A类
- DML和DQL 总结
一:MySql的存储引擎 问题的引入: 由于不同用户对数据的容量,访问速度,数据安全性有着不同的要求. 为了满足不同用户的需求,mysql数据库采用多种存储引擎来进行数据的存储! 1.1:查询mysq ...
- 匿名方法和Lambda 表达式
Overview 当你使用委托的时候,有时候是否会感觉到略微有些麻烦,尽管委托已经极大的减少了我们的工作量,比如,有一个方法,只需要使用一次,仅仅是传递给委托,我们就要定义一次他,这未免太 " ...
- forof循环
一.语法 1.遍历数组 let myArr=[1,2,3,4,5]; for (let ele of myArr) { console.log(ele); } let myArr=[1,2,3,4,5 ...
- Redis五大类型操作使用以及订阅发布功能
redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
- luogu P4779 【模板】单源最短路径(标准版)
线段树优化dij 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 我可能是个智障 // luogu-judger-enable-o2 #pragma GCC diagnostic error "-std= ...
- BZOJ.3998.[TJOI2015]弦论(后缀自动机)
题目链接 \(Description\) 给定字符串S,求其第K小子串.(若T=0,不同位置的相同子串算1个:否则算作多个) \(Solution\) 建SAM,处理出对于每个节点,它和它的所有后继包 ...
- Codeforces Round #375 (Div. 2) F. st-Spanning Tree 生成树
F. st-Spanning Tree 题目连接: http://codeforces.com/contest/723/problem/F Description You are given an u ...