//获取屏幕大小,以合理设定 按钮 大小及位置

  DisplayMetrics dm = new DisplayMetrics();

  getWindowManager().getDefaultDisplay().getMetrics(dm);

  int width = dm.widthPixels;

  int height = dm.heightPixels;

  //自定义layout组件

  RelativeLayout layout = new RelativeLayout(this);

  //这里创建16个按钮,每行放置4个按钮

  Button Btn[] = new Button[16];

  int j = -1;

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

  Btn[i]=new Button(this);

  Btn[i].setId(2000+i);

  Btn[i].setText("按钮"+i);

  RelativeLayout.LayoutParams btParams = new RelativeLayout.LayoutParams ((width-50)/4,40); //设

  置按钮的宽度和高度

  if (i%4 == 0) {

  j++;

  }

  btParams.leftMargin = 10+ ((width-50)/4+10)*(i%4); //横坐标定位

  btParams.topMargin = 20 + 55*j; //纵坐标定位

  layout.addView(Btn[i],btParams); //将按钮放入layout组件

  }

  this.setContentView(layout);

  //批量设置监听

  for (int k = 0; k <= Btn.length-1; k++) {

  //这里不需要findId,因为创建的时候已经确定哪个按钮对应哪个Id

  Btn[k].setTag(k); //为按钮设置一个标记,来确认是按下了哪一个按钮

  Btn[k].setOnClickListener(new Button.OnClickListener() {

  @Override

  public void onClick(View v) {

  int i = (Integer) v.getTag(); //这里的i不能在外部定义,因为内部类的关系,内部类好多繁琐的

  东西,要好好研究一番

  Intent intent = new Intent();

  intent.setClass(Work_01.this, Work_02.class);

  Bundle bundle = new Bundle();

  bundle.putInt("count", i);

  intent.putExtras(bundle);

  startActivity(intent);

  Work_01.this.finish();

  }

  });

  }

  然后,可以在Work_02里将“按下的按钮为:” i 打印出来,以确认设置的监听是否正确。

  比如,按下 按钮0 ,在Work_02对应的页面里,应该打印出 “按下的按钮为:0 ”。

Android开发之动态创建多个按钮的更多相关文章

  1. [转]android:动态创建多个按钮 及 批量设置监听

    之前投机取巧,先创建好多个按钮,再根据需要的数量进行部分隐藏,不过还是逃不过呀. 这样根本无法批量地 findId,批量地 设置监听. 所以今天还是认认真真地研究回“动态创建按钮”,终于,通过不断尝试 ...

  2. Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)

    一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ ...

  3. Android开发-API指南-创建 Content Provider

    Creating a Content Provider 英文原文:http://developer.android.com/guide/topics/providers/content-provide ...

  4. C#动态创建两个按钮,btn2复制btn1的Click事件,匿名委托

    现在有一个按钮btn1,要动态创建出一个btn2,需要btn2点击时调用btn1的点击. 在delphi中这种操作很简单:btn2.onClick:=btn1.onClick,因为onClick就是个 ...

  5. Android开发,Eclipse创建aidl接口时,出错

    Android开发中,当我们需要调用远程Service时,我们一般通过远程接口(RMI)来实现的,而Android的RMI需要AIDL(Android Interface Definition Lan ...

  6. [android] fragment的动态创建

    在一个商业软件中,会有很多的界面,如果没一个界面对应一个activity,那么activity会非常的多,清单文件也会非常的乱,谷歌在android3.0以后引入了新的概念叫fragment frag ...

  7. Android研究之动态创建UI界面具体解释

     Android的基本UI界面一般都是在xml文件里定义好,然后通过activity的setContentView来显示在界面上.这是Android UI的最简单的构建方式.事实上,为了实现更加复 ...

  8. 【VS开发】动态创建ActiveX控件

    bool CCollectDataDlgDlg::CreateMyCtrl(LPRECT lpRect, UINT nID, CWnd *pParent) {  CLSID clsid;  wstri ...

  9. Android开发之动态添加控件

    动态添加TextView控件: 一:创建一个Android project项目 activity_main.xml文件: 1.用两个LinearLayout布局分别包裹一对TextView,EditT ...

随机推荐

  1. man bash 关于shell的应有尽有 语法、快捷键...

    文件加载顺序 for if case ... 语法 往前移动一个单词 alt f https://github.com/hokein/Wiki/wiki/Bash-Shell%E5%B8%B8%E7% ...

  2. 读书笔记:编程小白的第一本python入门书

    书名:编程小白的第一本python入门书 作者:侯爵 出版社/出处:图灵社区 年份:2016年 封面: 感想: 本书短小精悍,精华部分在于给编程小白打了鸡血的同时输出了一种“高效学习法的思想”. 个人 ...

  3. table size script :

    I think Jonathan Lewis has explained the algorithm before, but it's alsosomething that we have inves ...

  4. Bootloader 跳转到 RT-Thread 或 FreeRTOS(基于 STM32)

    Bootloader 跳转到 RT-Thread 或 FreeRTOS(基于 STM32) 作者:猾蚁 QQ:7376220一.Bootloader 程序1. 准备好升级程序项目,可以使用 STM32 ...

  5. 关于C语言读取文件时候多读一行

    梗概:为什么C语言读取文件到结构体时为什么整天多读一行?一切都是[!feof(fp)]的错!!! while (!feof(fp)) { fgets(buffer, , fp); j++; } 像这样 ...

  6. Magnum基本介绍

    Magnum is an OpenStack API service developed by the OpenStack Containers Team making container orche ...

  7. LeetCode 441.排列硬币(C++)

    你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币. 给定一个数字 n,找出可形成完整阶梯行的总行数. n 是一个非负整数,并且在32位有符号整型的范围内. 示例 ...

  8. 输入一个正整数n (1<n<=10),生成 1个 n*n 方阵 求出对角线之和

    #define _CRT_SECURE_NO_WARNINGS #include <Windows.h> #include <stdio.h> #include <std ...

  9. ubuntu install fonts

    sudo apt-get install ttf-wqy-zenhei

  10. MVC4笔记 @functions @model @using

    /////@functions自定义函数////// @helper辅助方法的确可以很方便的完成辅助方法开发,不过却失去了一些弹性,例如,无法在@helper中自定义属性,只能单纯的传入参数,然后格式 ...