首页 > 编程语言 >Android 在程序中动态添加 View 布局或控件

Android 在程序中动态添加 View 布局或控件

时间:2023-04-03 23:09:06浏览次数:58  
标签:控件 lineLayout LayoutParams params showText new Android btn View


有时我们需要在程序中动态添加布局或控件等,下面用程序来展示一下相应的方法:

1、addView

添加View到布局容器

2、removeView

在布局容器中删掉已有的View



3、LayoutParams 

设置View的大小位置

下面来看一个demo;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.activity_main);
		
		LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
		LinearLayout lineLayout = new LinearLayout(this);
		lineLayout.setOrientation(LinearLayout.VERTICAL);
		lineLayout.setLayoutParams(params);
		lineLayout.setGravity(Gravity.TOP );
		addView(lineLayout);
		setContentView(lineLayout);
		
	}
    
	private void addView(final LinearLayout lineLayout)
	{
		final TextView showText = new TextView(this);
		showText.setTextColor(Color.GREEN);
		showText.setTextSize(30);
		showText.setId(10001);//设置 id
		showText.setText("我是在程序中添加的第一个文本");
		showText.setBackgroundColor(Color.GRAY);
		// set 文本大小
		LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
				LayoutParams.WRAP_CONTENT);
		//set 四周距离
		params.setMargins(10, 10, 10, 10);
	 
		showText.setLayoutParams(params);
		
		//添加文本到主布局
		lineLayout.addView(showText );
 		
		//创建按钮
		Button btn = new Button(this);
		btn.setText("点击删除文本");
		btn.setBackgroundColor(Color.GRAY) ;
		LinearLayout.LayoutParams btn_params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
				LayoutParams.WRAP_CONTENT); 
		btn_params.setMargins(0, 60, 60, 0);
		btn_params.gravity = Gravity.CENTER_HORIZONTAL;
		btn.setLayoutParams(btn_params);
		// 动态添加按钮到主布局
		lineLayout.addView(btn);
		
		//点击按钮 动态删除文本
		btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(null != lineLayout.findViewById(10001))
				{
					lineLayout.removeView(showText);
				}
				else
				{
					Toast.makeText(MainActivity.this, "文本已被删除", Toast.LENGTH_SHORT).show();
				}
			}
		});
		
	    //动态创建一个相对布局
		RelativeLayout relaLayout = new RelativeLayout(this);
		relaLayout.setBackgroundColor(Color.BLUE);
	    RelativeLayout.LayoutParams lp11 = new RelativeLayout.LayoutParams(
	    		ViewGroup.LayoutParams.MATCH_PARENT, 120);
	    
	   
	    relaLayout.setLayoutParams(lp11);
	    //动态创建一个文本
		final TextView RelaText = new TextView(this);
		RelaText.setTextColor(Color.GREEN);
		RelaText.setTextSize(20);
		RelaText.setText("我是在程序中添加的第二个文本,在相对布局中");
		RelaText.setBackgroundColor(Color.GRAY);
		
		//设置文本的布局
	    RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
	    		ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
	     
	    lp2.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
	    lp2.setMargins(10, 10, 10, 10);
	    //将文本添加到相对布局中
		relaLayout.addView(RelaText,lp2);
		//将这个布局添加到主布局中
	    lineLayout.addView(relaLayout);
 
	}
}


看一下效果图片:

点击按钮前:

Android 在程序中动态添加 View 布局或控件_相对布局

点击按钮删除上面的文本:

Android 在程序中动态添加 View 布局或控件_动态添加控件_02




标签:控件,lineLayout,LayoutParams,params,showText,new,Android,btn,View
From: https://blog.51cto.com/u_12389088/6167646

相关文章

  • Android ImageView 详述
    结构继承关系publicclassView.OnClickListnerextendsView java.lang.Objectandroid.view.Viewandroid.widget.ImageView类概述显示任意图像,例如图标。ImageView类可以加载各种来源的图片(如资源或图片库),需要计算图像的尺寸,比便它可以在其他布局中使用,并提供例如缩放和着色(渲染)各......
  • Android中常用的5大布局详述
    Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。       所有的布局方式都可以归类为ViewGroup的5个类别,即ViewGroup的5个直接子类。其它的一些布局都扩展自这5个......
  • Android与STM32通信中巧妙解决中文乱码问题
    前言网上一大堆都是要多种格式相互转换,并且要很大的字库文件,对于小应用工程,小容量的STM32芯片,额外多出这些开销会感到蛮不舒服的,而且绝大部分的乱码问题时发生在STM32这边,所以本文是从Android端解决编码格式转化的问题,STM32那边稍做处理即可,我做的转换是从UTF-8转到GBK解决方案......
  • Design各控件的搭配使用3
    在上一个版本基础上新增:对RecyclerView的操作(线性,网格,瀑布流)QuickReturnBehavior控制底部Footer的显示<android.support.v4.widget.DrawerLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/......
  • 带header的GridView(HeaderGridView)
    扣自goolgeandroid.photos/**Copyright(C)2013TheAndroidOpenSourceProject**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincompliancewiththeLicense.*Yo......
  • Android开发-Android常用组件-SeekBar拖动条
    4.9 SeekBar拖动条android:max滑动条的最大值android:progress滑动条的当前值android:secondaryProgress二级滑动条的进度android:thumb滑块的drawable 接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener我们只需重写三个对应......
  • 成品直播源码推荐,Android 禁止下拉菜单栏
    成品直播源码推荐,Android禁止下拉菜单栏1.屏蔽非锁屏下的下拉菜单栏这种Android系统其实是提供了方法的,只不过是隐藏的,只给系统应用,也就是用mk编译的apk使用。如果第三方应用想要使用,或者Androidstuido编译方式的想要使用。则可以使用反射。 /** *Allowsanapptoco......
  • 搭建直播平台,android 如何得到本地视频的缩略图
    搭建直播平台,android如何得到本地视频的缩略图 publicclassVideoThumbUtils{  /**   *得到视屏的缩略图   *   *@paramvideoPath   *@paramwidth   *@paramheight   *@return   */  publicstaticBitmapgetVideoThum......
  • Android AVB中的几种Descriptor
    avbtoolinfo_image查看img信息./android/external/avb/avbtoolinfo_image--imageout/evb/download_images/emmc/vbmeta.imgMinimumlibavbversion:1.0HeaderBlock:256bytesAuthenticationBlock:576bytesAuxiliaryBlock:3456byte......
  • 【论文速递】ECCV2022 - PETR: Position Embedding Transformation for Multi-View 3D
    【论文原文】:PETR:用于多视图3D对象检测的位置嵌入变换论文:https://arxiv.org/abs/2203.05625代码:https://github.com/megvii-research/PETR博主关键词:小样本学习,语义分割,图注意力网络,互监督,目标检测,三维视觉摘要在本文中,我们开发了用于多视图3D对象检测的位置嵌入变换(PET......