先来一下实体效果图片:

点击 HELLO WORLD,不断产生 button按钮,在最下方。

代码 如下:

public class MainActivity extends Activity {private ViewGroup viewGroup;private int countId = 100;private SpecialCustomView specialCustomView;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView( R.layout.layout );viewGroup = (ViewGroup) findViewById( R.id.container );specialCustomView = new SpecialCustomView();Button button = specialCustomView.addView( this , countId );countId ++;viewGroup.addView( button );setContentView( viewGroup );button.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View view){// 添加视图 组件Button button = specialCustomView.addView( MainActivity.this , countId );countId ++;viewGroup.addView( button );setContentView( viewGroup );}});}
public class SpecialCustomView{public Button addView( Context context , int countId ){Button button = new Button( context );RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);// 设置位置if( countId == 100)params.addRule( RelativeLayout.BELOW , R.id.topic);elseparams.addRule( RelativeLayout.BELOW , countId-1 );button.setLayoutParams(params);button.setBackgroundColor(Color.RED);button.setText( "第" + countId + "个button" );button.setId( countId ++  );return button;}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/container"><!--  置顶内容设置的视图 --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:id="@+id/topic"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="置顶内容的标题"android:textSize="24sp"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="置顶内容下面的内容"android:textSize="14sp"/></LinearLayout></RelativeLayout>

为什么是使用 Java代码产生 视图?

目前就是我正在做 一个页面展示的功能,由于展示内容 就是 百度app首页新闻消息一样,共同点太多,所以采用了LinearLayout + ListView 产生视图内容,但是这样如果涉及到图片,视屏方面的话,就有点问题了。

Android 请求数据方面全部是异步操作,所以一旦 视图渲染完成,可能当图片渲染到了的时候,找不到对应的视图了,因为LinearLayout + ListView产生的视图,全部一模一样的,甚至 id 值。所以无法再次通过id进行页面修改。所以就是使用到Java代码产生视图,通过自定义视图id,可以修改界面。

相关函数以及参数解析:

countId 表示下一个button 的id值

表示 视图占据的宽度和高度 MATCH_PARENT 占满,WRAP_CONTENT 内容而定

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

第一个参数:表示相对于视图的什么位置,第二个参数:表示相对的视图

 params.addRule( RelativeLayout.BELOW , R.id.topic);

获取 RelativeLayout 布局的容器:在这里是获取整个layout.xml文件里面的内容

viewGroup = (ViewGroup) findViewById( R.id.container );

Android Java代码动态创建页面 之 动态生成botton相关推荐

  1. java生成函数excel_如何通过Java代码实现创建和读取Excel公式

    如何通过Java代码实现创建和读取Excel公式 发布时间:2020-06-06 21:58:24 来源:亿速云 阅读:250 作者:Leah 如何通过Java代码实现创建和读取Excel公式?相信大 ...

  2. java代码防止sql注入_动态Java代码注入

    java代码防止sql注入 在本文中,我们将研究如何将Java代码动态加载到正在运行的jvm中. 该代码可能是全新的,或者我们可能想更改程序中某些现有代码的功能. (在开始之前,您可能想知道为什么到底 ...

  3. android 动态创建view,react-native动态创建Android View 无效果

    问题描述 react-native动态创建Android View 无效果,我想在react-native里面直接点击函数进行创建,也就是通过module中的方法创建View 问题出现的环境背景及自己 ...

  4. 【Freemarker】java代码wps word带图片动态模板生成

    一. 新建word模板 先通过wps或word等文字处理工具新建一个想要的结构的word文档,数据都先用假数据填充好,填充的数据实际使用上是没用的,是为了咱们修改模板能够迅速定位到需要动态填充区域的. ...

  5. 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )

    文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...

  6. android java代码打印系统日志_Java快速开发平台源码

    Java快速开发平台源码 用户权限管理系统源码 一个轻量级的Java快速开发平台,能快速开发项目并交付[接私活利器] 友好的代码结构及注释,便于阅读及二次开发 实现前后端分离,通过token进行数据交 ...

  7. 用java代码根据html页面生成图片

    最近因公司要搞活动,需要在微信公众号中用户点击按钮后返回一张即时生成的海报给用户,这张海报需要包含该用户头像.姓名.跳转活动页面的二维码,跟微信如何对接我这里就不赘述了,说一说如何生成这张海报. 首先 ...

  8. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  9. Android Java 代码设置 layout_weight 属性

    介绍 遇到在一个页面布局中,UI显示需要把屏幕分成上下两部分高度均分显示内容.是不是会想到 xml 里的 layout_weight设置权重的属性,但是现在需要代码里设置权重. 查了下,控件必须在 L ...

  10. Android Java代码中获取App渠道信息

    项目中需要在Java中获取App打包的渠道信息,而打包渠道相关的内容一般都设置在 build.gradle 的 productFlavors{} 中. 以下是介绍一种方便的实现方法,通过manifes ...

最新文章

  1. js中常用的算法排序
  2. java web项目目录报错_netdevgirl.通过maven创建javaweb项目
  3. 服务器监听端口信息,服务器监听端口信息
  4. ustc小道消息20211229
  5. Android布局加载慢,Android布局优化(四)X2C — 提升布局加载速度200%
  6. 基于多线程的TCP局域网通信,客户端向服务端上传 文件简单实现源码
  7. 复习Java异常处理_异常分类_自定义异常_线程初步了解
  8. pythonの鉴黄之路(二)——图片转base64码
  9. OpenCV初探 —— 将OpenCV窗口链接在MFC的PictureControl控件中
  10. 现在资本进入社区团购,大搞补贴战,算不算涉嫌扰乱市场,垄断?
  11. android如何用代码实现界面ui
  12. SPSS之双独立样本的T检验
  13. html5在线拍照,HTML5整合本地摄像头,实现视屏预览及拍照上传
  14. 在低版本浏览器内核中适配replaceAll
  15. 怎么查询电脑的磁盘序列号和各种硬件信息(Windows系统)
  16. 机器学习-GB、GBDT、XGboost、Adaboost
  17. pdf转换成word后有文字叠加_Pdf转换成word文字的好方法
  18. Process finished with exit code -1073740791 (0xC0000409)定位错误原因
  19. js 判断企业微信打开
  20. 爬虫练手小项目:豆瓣高分图书TOP100

热门文章

  1. C# 中通过CancellationTokenSource实现对超时任务的取消
  2. DataCastle员工离职预测数据竞赛个人总结
  3. 动态范围Bitmap的参考实现
  4. 最新多目标跟踪算法综述-2020年08月23日
  5. SLG手游Java服务器的设计与开发——数据管理
  6. Congestion问题怎么解决?
  7. 混沌之初--制作一款RPG游戏
  8. 《人性的弱点》-[美]戴尔·卡耐基
  9. android最新固件版本,Android获取系统(ROM)类别及版本号
  10. 职场人一起进阶吧(内附技术人进阶路径、Java开源项目完整推荐等)