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

  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. Launch iCar Scan Android Scanner Support Bluetooth X431 iDiag Update Version

    Autonumen.com release new Launch iCar Scan for Android,Launch iCarScan Bluetooth Scanner is update v ...

  2. Win 10 Enable .net framework 3.5 error (Error code:0x800F081F )

    在下面页面enable .net frramwork 3.5时,发生0x800F081F错误. 解决方案: 1. 在如下链接下载Win10 版的microsoft-windows-netfx3-ond ...

  3. 转 from __future__ import unicode_literals

    转自 https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868200230 ...

  4. js、jquery的入口函数

    js的入口函数写法: window.onload = function() { }; 如果文件中有多个window.onload入口函数,则只会执行最后一个,之前的入口函数没有用. jquery的入口 ...

  5. Django-5.1 模型层 单表操作

    7.1 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开 ...

  6. python 自动安装工具 setuptools(easy_install) 的使用

    1.下载安装 python 安装工具,下载地址:http://pypi.python.org/pypi/setuptools ,可以找到正确的版本进行下载. 2.解压缩后双击 ez_setup.py ...

  7. HDU 4336——Card Collector——————【概率dp】

    Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  8. DB2错误码大全

    sqlcode sqlstate 说明 000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用 +098 0 ...

  9. js分享插件

    这是个在线版的分享插件 <div class="share-icon"> <span>分享:</span> <div class=&quo ...

  10. Linux下svn环境搭建

    不久前买了一个阿里云服务器,想着在上面搭建一个svn服务方便自己的代码管理.顺便记录下自己的搭建过程 首先,安装服务 通过yum -stall subversion 安装snv,可能install之前 ...