动态添加TextView控件:

一:创建一个Android project项目

activity_main.xml文件:

1、用两个LinearLayout布局分别包裹一对TextView,EditText控件,将orientation设置为水平方向,EditText的hint属性可以实现水印效果,两个EditText用来控制显示(TextView控件数量)的行和列。

2、 用一个LinearLayout布局包裹Button按钮,在EditText控件输入完后,点击button按钮,就会自动生成控件。

3、 用一个TableLayout布局用表格的形式显示生成的控件。

   <LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical" ><LinearLayoutandroid:layout_weight="1"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextView android:layout_width="wrap_content"android:gravity="center_vertical"android:layout_height="match_parent"android:layout_marginLeft="10dp"android:textSize="20sp"android:text="行:"/><EditTextandroid:id="@+id/editText1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"android:hint="请输入数字!"android:numeric="decimal" /></LinearLayout><LinearLayoutandroid:layout_weight="1"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextView android:layout_width="wrap_content"android:gravity="center_vertical"android:layout_height="match_parent"android:layout_marginLeft="10dp"android:textSize="20sp"android:text="列:"/><EditTextandroid:id="@+id/editText2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"android:hint="请输入数字!"android:numeric="decimal"><requestFocus /></EditText></LinearLayout><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><Button android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/button1"android:text="生成表格"/></LinearLayout></LinearLayout><TableLayoutandroid:layout_width="match_parent"android:layout_height="match_parent" android:id="@+id/table1"></TableLayout>

MainActivity.java文件:

1、WC和MP变量分别用来设置自动生成TextView控件的宽高。

2、首先创建两个EditText,一个Button,一TableLayout变量,并且通过FindViewById(R)获取控件相对应的id.

3、Button通过setOnClickListener(New OnClickListener){});方法添加监听事件,实现Onclick()点击按钮触发事件。

4、两个输入宽通过Integer.parseInt(row.getText().toString())的方法获取输入的内容并将其转换为整型,getText()获取输入值。

5、代码创建控件:通过new 控件(MainActivity.this)的方式创建控件,MainActity是匿名类。

public class MainActivity extends Activity {private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;    private final int MP = ViewGroup.LayoutParams.MATCH_PARENT;  private EditText row;private EditText column;private Button bt1;private TableLayout tableLayout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取控件Buttonbt1=(Button) findViewById(R.id.button1);//获取文本输入框控件row=(EditText) findViewById(R.id.editText1);column=(EditText) findViewById(R.id.editText2);//给button按钮绑定单击事件bt1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if(row.getText().length()>0&&column.getText().length()>0){//把输入的行和列转为整形int row_int=Integer.parseInt(row.getText().toString());int col_int=Integer.parseInt(column.getText().toString());//获取控件tableLayout     tableLayout = (TableLayout)findViewById(R.id.table1); //清除表格所有行
                    tableLayout.removeAllViews();//全部列自动填充空白处     tableLayout.setStretchAllColumns(true);    //生成X行,Y列的表格     for(int i=1;i<=row_int;i++)    {    TableRow tableRow=new TableRow(MainActivity.this);    for(int j=1;j<=col_int;j++)    {    //tv用于显示     TextView tv=new TextView(MainActivity.this);//Button bt=new Button(MainActivity.this);tv.setText("("+i+","+j+")");   tableRow.addView(tv);    }    //新建的TableRow添加到TableLayout
                 tableLayout.addView(tableRow, new TableLayout.LayoutParams(MP, WC,1)); }    }else{Toast.makeText(MainActivity.this,"请输入行和列",1).show();}}});}  }

6、双重循环,最外面一层用来创建TableRow行数的,里面用来创建列数的。

7、TableLayout表格布局可以通过removeAllViews()方法清除表格数据,防止点击两次出现重复的内容。通过setStretchAllColumns(true)设置全部列自动填充空白处。

8、 TableLayout表格布局中的TableRow相当于table的tr标签,可以通过addView()将tr追加到表中,控件也可以通过这个方法追加到行(TableRow)中.

转载于:https://www.cnblogs.com/wdht/p/6095225.html

Android开发之动态添加控件相关推荐

  1. android开发中为MultiAutoCompleteTextView控件添加其他分隔符

    android开发中为MultiAutoCompleteTextView控件添加其他分隔符,例如:分隔符改为分号";" zs;ls;ww;xm //SemicolonTokeniz ...

  2. Android 在布局容器中动态添加控件

    这里,通过一个小demo,就可以掌握在布局容器中动态添加控件,以动态添加Button控件为例,添加其他控件同样道理. 1.addView 添加控件到布局容器 2.removeView 在布局容器中删掉 ...

  3. Android开发之日期时间控件选择

    Android开发之日期时间控件选择 文章目录 前言 一.创建弹出Layout 1.1 新建Layout,修改样式为LinearLayout 1.2 Layout中添加日期和时间控件 二.新建Date ...

  4. 动态添加综合布局---动态添加控件及将某XML动态加入到Activity显示(续)

    前言:以前曾写过一篇关于动态生成控件的文章<动态添加控件及将某XML动态加入到Activity显示>,比较浅显,对于RelativeLayout的相关布局设置方法及相对布局与线性布局的混合 ...

  5. 动态添加控件及将某XML动态加入到Activity显示

    一.动态添加控件.设置参数 这个难度比较大,放在前面讲,用的也比较多,普通情况下,我们会提前把布局XML写好,然后对XML中的元素进行设置,但这种方法在有些情况下就显得不适合,比较聊天应用,比如帖子的 ...

  6. asp.net动态添加控件学习

    看了老师的教程后,自己一点感悟记录下来: 1.在页面提交后,动态生成的控件会丢失, 但如果生成控件的代码在pageload中,就可以,原理是每次生成页面都执行生成. 2.动态按件或页面原来控件, 在页 ...

  7. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法

    博客分类: jquery-easyui jQueryAjax框架HTML  现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...

  8. 关于页面动态添加控件(转)

    最近看到很多问题都是关于页面动态添加控件,页面postback以后,就取不到这些控件了.其实每次在页面上动态添加控件(或者在数据控件上动态添加列),它们的状态是不会被添加到页面的ViewState中去 ...

  9. Windows phone7 动态添加控件

    Windows phone7 动态添加控件 2011-03-29 3:48 using System; using System; using System.Collections.Generic; ...

最新文章

  1. ARM嵌入式操作系统启动
  2. python好学嘛-Python好学吗?Python学习路线
  3. 51单片机驱动ds12887c语言,51单片机+DS12887+12864大数字时钟程序+电路
  4. minincom cannot open /dev/modem
  5. Linux网络故障排查命令(ifconfig、ping、telnet、netstat、lsof、nc、curl、tcpdump)
  6. 系列文章:Kubernetes日志采集最佳实践
  7. c# 替换html注释,C# 替换div标签
  8. CVPR 2019 | 旷视提出新型目标检测损失函数:定位更精准
  9. centos7默认字体_CentOS7终端的分辨率和字体修改
  10. java设置绝对布局_浅谈Java绝对布局 原创
  11. 制造跨度 makespan是什么
  12. 新hp设备无法连接到计算机,联想的台式机,用的win7系统,无法装惠普1108打印机驱动,一直显示新设备现已连接,然后无限循环!!!...
  13. python can通信_Python中的高级/抽象Canbus接口
  14. java知识点ppt背景图片_Java 给PPT幻灯片添加背景颜色和背景图片
  15. CPen 使用 PS_DOT 无法画出虚线
  16. 华为路由器接口如何区分_华为路由器的usb接口是什么意思
  17. 关于720vr 全景平台 全景图片制作系统 仿720云需要注意的坑 诚意贴
  18. ps快捷键对应的英文字母缩写
  19. Keras : 训练minst数据集并加载模型对本地手写图片进行预测
  20. 【Windows】修改已连接的蓝牙设备名称

热门文章

  1. python基础——使用__slots__
  2. 集成电路883和883b有什么区别
  3. MYSQL数据库学习十七 日志管理
  4. docker二进制代码编译
  5. 【转】解决多文件编译中连接错误 multiple definition of*****
  6. [转]31个让你变聪明的方法
  7. ELK 经典用法—企业自定义日志收集切割和mysql模块
  8. java实现https免证书认证
  9. Android 的 dex2jar 和 jd-gui 反编译 apk 源代码
  10. 实时计算 Flink性能调优