工程目录:

MainActivity

package com.example.test1121;import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ActionBar bar=getSupportActionBar();bar.hide();//增加XML样式控件布局final LayoutInflater inflater = LayoutInflater.from(this);//被插入的布局final LinearLayout layout1 = (LinearLayout) findViewById(R.id.linearLayout);//插入的布局LinearLayout layout2 = (LinearLayout) inflater.inflate(R.layout.btn_layout, null).findViewById(R.id.btn_layout);layout1.addView(layout2);//动态增加自定义xml样式控件String s="我是动态增加的自定义xml样式按钮";char c[]=s.toCharArray();for(char t:c){final Button btn=new Button(getApplicationContext());btn.setBackgroundResource(R.drawable.btn_style);btn.setText(""+t);btn.setTextSize(12);btn.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {btn.setWidth(72);btn.setHeight(72);v.setMinimumHeight(72);v.setMinimumWidth(72);}});layout2.addView(btn);//之所以在这里回调onclick是因为在绘制图形时有一个绘制时间,get/setHeight、get/setWidth来设置控件会显示高宽为0,用了好多方法,只有这个方法有效btn.callOnClick();}}
}

btn_style.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!--按下--><item android:state_pressed="true"><shape><gradient android:startColor="#90CAF9" android:endColor="#90CAF9"android:angle="270" /><stroke android:width="1px" android:color="#0088F1FF" /><corners android:radius="25dip" /><padding android:left="10dp" android:top="10dp"android:right="10dp" android:bottom="10dp" /><size android:height="10dp" android:width="10dp"/><sizeandroid:width="10dp"  android:height="10dp" /></shape></item><!--抬起--><item><shape><gradient android:startColor="#C5E1A5" android:endColor="#C5E1A5"android:angle="180" /><stroke android:width="1px" android:color="#00111010" /><corners android:radius="25dip" /><padding android:left="0dp" android:top="0dp"android:right="0dp" android:bottom="0dp" /><sizeandroid:width="10dp"  android:height="10dp" /></shape></item>
</selector>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><HorizontalScrollViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:scrollbars="none"><LinearLayoutandroid:id="@+id/linearLayout"android:layout_width="match_parent"android:layout_height="36dp"android:gravity="center"android:orientation="horizontal"></LinearLayout></HorizontalScrollView></LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

btn_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/btn_layout"android:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn0"android:background="@drawable/btn_style"android:layout_width="34sp"android:textSize="12dp"android:layout_height="34sp"android:text="1"/><Buttonandroid:id="@+id/btn1"android:background="@drawable/btn_style"android:layout_width="34sp"android:textSize="12dp"android:layout_height="34sp"android:text="2"/><Buttonandroid:id="@+id/btn2"android:background="@drawable/btn_style"android:layout_width="34sp"android:textSize="12dp"android:layout_height="34sp"android:text="3"/><Buttonandroid:id="@+id/btn3"android:background="@drawable/btn_style"android:layout_width="34sp"android:textSize="12dp"android:layout_height="34sp"android:text="4"/>
</LinearLayout>


以上就是在Android的Activity中动态增加布局和控件的两种方法。
大致思路:
**第一种:**在主布局下增加另外一个xml布局文件。在Activity中可以通过findViewById改变另一个xml文件中的控件来使该控件在主布局中相应地改变。
**第二种:**在主布局下动态增加多个自定义样式控件。

Android在Activity中动态增加xml自定义样式布局控件(引用xml布局文件和循环增加控件)相关推荐

  1. Android之在Activity中动态得到Adapter类中数据

    1.问题 Activity中动态得到Adapter数据 2.解决办法 在Adapter中写入接口 Class Adapter {Interface A {void onClick(int a, int ...

  2. Android开发-Activity中“android:exported“属性的作用,以及“Permission Denial: starting Intent“错误解决

    如何在一个应用程序中,启动另外一个应用程序?最近正有这样的需求,也踩了一个小坑.本节介绍使用Activity中"android:exported"属性来实现这种访问. Activi ...

  3. android在activity中锁屏解锁后重走OnCreate的问题的解决办法

    在项目中,遇到了需要在某个activity中根据不同的情况下设置为横屏或竖屏,而且不因重力感应改变方向.因此刚开始我没有在manifest里指定方向,而是在代码中强制设置屏幕的方向 setReques ...

  4. Android学习之复选框checkbox自定义样式以及调整图片大小

    1.自定义样式: 下载复选框样式图:https://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2 图片重命名为英文(否则找不到)并 ...

  5. 【Android】代码中动态设置 drawable 背景

    如图这样的效果,我们平时直接可以在 xml 写死. 写法很简单. <?xml version="1.0" encoding="utf-8"?>< ...

  6. java 类加载 apk_在Android的App中动态的加载Java类

    原文的地址:http://yenliangl.blogspot.com/2009/11/dynamic-loading-of-classes-in-your.html 我正在编写一个应用程序能够加载别 ...

  7. android onresume函数,android - 在Activity中重新创建后未调用onResume

    在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity.重新创建后,不调用onResume. 我也收到错误:E/ActivityThrea ...

  8. android 动态矩形条,android – 从相机中动态检测不同形状(圆形,方形和矩形)?

    更新:这个StackOverflow帖子(包含一些很好的样本图片)似乎至少解决了你的问题的 circles detection部分.他指出的优秀文章的参考资料可以在 wiki page上找到(不幸的是 ...

  9. 如何在jquery中动态添加!important样式

    今天改bug时候出现了一个bug,在js中修改样式时加入 !important,但是 html中没有该样式, 错误写法: $('#confirm').css({'background':'#f5f5f ...

最新文章

  1. JavaScript实现combine With Repetitions结合重复算法(附完整源码)
  2. Linux-2.6.20的cs8900驱动分析
  3. 服务降级的概念及应用手段
  4. 12产品经理要懂的-人性满足思维
  5. iPhone 诈骗又出新招,别看见弹窗就输密码
  6. php5d,php挖洞基础知识篇以及防范方法
  7. 遗传算法实例(matlab编程实现)
  8. 日历问题 —— C++
  9. eclipse安装及配置android基础教程
  10. 常用的Transformation
  11. iOS开发-简单图片背景替换 实现抠图效果
  12. python中for c in s是什么意思_以下程序s=3for c in Python:s=s+2print(s)的输出结果是:()...
  13. 要来了!国内安卓统一推送标准将于 今年3 月开启测试
  14. 1677. 发票中的产品金额
  15. Photon Socket 术语表
  16. SyntaxError: Non-UTF-8 code starting with '\xca' in file main.py on line 3, but no encoding declared
  17. G++ + OpenCV 编译
  18. Qt论坛和博客网址大全
  19. Ubuntu安装阿里云国内源
  20. 算法竞赛进阶指南——队列学习笔记

热门文章

  1. 乐视超级电视再创辉煌?超5 X55全面屏电视上手体验
  2. 我如何不再是一个可怕的“10 倍经理”?
  3. 5G来了,智能手机们还能拼什么?
  4. AI 会替代程序员?超好用的自动补全代码工具 Deep TabNine!
  5. 拆解拼多多、趣头条、小红书背后的上海互联网基因
  6. 开源游戏《一小时人生》GitHub仓库被删,CEO亲自道歉
  7. 陆奇技术入局拼多多,拼多多能否摆脱“五环外”?
  8. java随机数函数生成指定区间的,意外的惊喜
  9. STM32:定时器中断与优先级
  10. mysql如何加快备份和恢复速度_加速mysql备份和恢复