android从xml动态创建控件,Android动态添加GridLayout控件_子绘绘的博客-程序员宝宝

技术标签: android从xml动态创建控件  

private void generateKeyBoard() {

Resources resources = getResources();

int numberSize = resources.getDimensionPixelSize(R.dimen.key_size);

int margin = resources.getDimensionPixelSize(R.dimen.keyboard_mt);

int deleteWidth = resources.getDimensionPixelSize(R.dimen.key_delete_width);

int length = mKeys.length;

for (int i = 0; i < length; i++) {

int row = i / 6;

int col = i % 6;

GridLayout.Spec rowSpec = GridLayout.spec(row); // 设置它的行和列

GridLayout.Spec columnSpec = GridLayout.spec(col, i == length - 1 ? 2 : 1);

GridLayout.LayoutParams params = new GridLayout.LayoutParams(rowSpec, columnSpec);

params.leftMargin = col != 0 ? margin : 0;

params.topMargin = row == 1 ? margin : 0;

params.height = numberSize;

Button number = (Button) LayoutInflater.from(this).inflate(R.layout.layout_number, mKeyBoard, false);

number.setTypeface(TypefaceUtil.getFont(this));

number.setText(mKeys[i]);

if (i != length - 1) {

params.width = numberSize;

} else {

params.width = deleteWidth;

number.setTextSize(resources.getDimension(R.dimen.textsize_48));

}

if(i == 0) number.requestFocus();

params.setGravity(Gravity.FILL);

number.setTag(i);

number.setLayoutParams(params);

number.setOnClickListener(this);

mKeyBoard.addView(number);

}

}

保存以做参考

注意点:

最后的删除占两个位置,所以GridLayout.Spec columnSpec = GridLayout.spec(col, 2);表示占两列的意思

也可以利用RecyclerView来实现,不过那个需要写的代码多了点,这只是个简单的需求,所以就用GridLayout来代替了,也还不错

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42317115/article/details/117310143

智能推荐

第三章 springmvc 视图及REST_Jason.Yang_Tom的博客-程序员宝宝

本章目标视图和视图解析器 进行重定向和转发 Spring表单标签 REST CRUD什么是视图解析器SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图,SpringMVC中用于把View对象呈现给客户端的是View对象本身,而ViewResolver只是把逻辑视图名称...

如何实时查看mysql当前连接数_classicbear的博客-程序员宝宝_查看mysql数据库连接数

如何实时查看mysql当前连接数? 1、查看当前所有连接的详细资料:./mysqladmin -uadmin -p -h10.140.1.1 processlist2、只查看当前连接数(Threads就是连接数.):./mysqladmin  -uadmin -p -h10.140.1.1 status、查看当前所有连接的详细资料:mysqladmin

std::string 类中find_first_not_of ()函数_liu44235的博客-程序员宝宝_find_first_not_of

使用string的empty()函数判断字符串是否为空,但不能判断是不是“_ ”(_ 表示空格)或者连续空格“___”;此时可以使用

让乔布斯告诉程序员:为什么技术思维不值钱?_萌眼牛牛 Lah的博客-程序员宝宝

之前,我看过《乔布斯传》这本书籍,然后最近这几天在读《成为乔布斯》这本书籍。说实话,《成为乔布斯》确实比《乔布斯传》这本书写好的,所以,对于大家如果喜欢乔布斯,或者想读乔布斯相关书籍的同学,可以读一读《成为乔布斯》这本书。在读《成为乔布斯》的时候,我看到这么一段话:家酿计算机俱乐部成员对他俩(乔布斯和沃兹)的作品反应平平。电脑之所以有趣,是因为用户可以设计、组装自己的机器,这也是为什么俱乐部的名字...

Debian11镜像源_游戏猫的博客-程序员宝宝_debian镜像源

腾讯云镜像站deb https://mirrors.tencent.com/debian/ bullseye main non-free contribdeb-src https://mirrors.tencent.com/debian/ bullseye main non-free contribdeb https://mirrors.tencent.com/debian-security/ bullseye-security maindeb-src https://mirrors.tencent

4.寻找两个正序数组的中位数_STU756的博客-程序员宝宝

public double findMedianSortedArrays(int[] nums1, int[] nums2) { int m = nums1.length, n = nums2.length; //l 和 r 解决(m + n)奇偶性问题 int l = (m + n + 1) / 2; int r = (m...

随便推点

使用Xcode进行单元测试 —— 环境配置_cy-app的博客-程序员宝宝

转自 http://42.96.169.71/blog/2013/01/15/shi-yong-xcodejin-xing-dan-yuan-ce-shi/单元测试,是保证产品质量的一个好方法。 移动产品会经常的更新升级,每次版本更新的时候,都需要花费大量的精力来进行测试。 使用单元测试,则可以减少这类重复性的工作。 能够让测试变得更加自动化并且大幅提高测试的效率。 Xcode 为我们

Android_硬件加速_寒弦的博客-程序员宝宝

Android中的硬件加速前言从andoroid 3.0开始,Android的2D渲染管线可以更好的支持硬件加速。硬件加速是使用GPU进行View上的绘制操作。硬件加速的级别applicationactivitywindowview为何有多级别的硬件加速硬件加速可以带啦性能的提升,为什么android不直接全部使用硬件加速,而是区别出来多级硬件加速呢?因为并不是所有的2D图形操作都支持硬件

Android中Handler的sendEmptyMessage的理解_ElvisDu的博客-程序员宝宝_android sendemptymessage

在写代码的过程中,碰到一行代码不理解,去看了下源码,来记录下。mHandler.sendEmptyMessage(0);sendEmptyMessage这个方法之前没有碰到过,查阅源码后发现: /** * Sends a Message containing only the what value. * * @return Returns true

滑动菜单栏之开源项目SlidingMenu的使用_非著名程序员的博客-程序员宝宝

一、SlidingMenu简介      相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作。很多优秀的应用都采用了这种界面方案,像facebook、人人网、everynote、Google+等等。如下图所示:           Google+界面效果图             

【JS】中parentNode,parentElement,childNodes,children之间的区别_James-Blackhu的博客-程序员宝宝

parentElement 获取对象层次中的父对象。 parentNode 获取文档层次中的父对象。 childNodes 获取作为指定对象直接后代的 HTML 元素和 TextNode 对象的集合。 children 获取作为对象直接后代的 DHTML 对象的集合。 parentNode和parentElement功能一样,childNodes和children功能一样。但是parentNode和childNodes是符合W3C标准的,可以说比较通用。而另外两个只是...

wamp中的php插件怎么用,php - Composer警告:缺少openssl扩展名。 如何在WAMP中启用..._琴台梦的博客-程序员宝宝

php - Composer警告:缺少openssl扩展名。 如何在WAMP中启用尝试通过安装程序安装程序在Win7 / 64 + WampServer 2.2上安装Composer依赖关系管理工具,我收到以下消息:缺少openssl扩展,这将降低Composer的安全性和稳定性。 如果可能,您应该启用它或使用--with-openssl重新编译php所以这就是我所做的......从我在T...

推荐文章

热门文章

相关标签