android在布局中动态增加view时的层级控制

Android 增加布局圆角功能,支持背景裁切圆角 我们Android开发同学最常见、频繁画UI时会遇到有角度的布局。例如:通常,我们都会在drawble文件夹下创建Shape.xml去实现对吧?当然这样的代码实现方式没毛病。但是,项目大了业务繁杂,工程中会出现很多此类文件,显得非常臃肿,而且不方便复用,不利于研发效率提升。那么,我们就会思考,是否可以有一种能更快捷且优雅的方式实现这个圆角布局。 阅读详情

问题:我们有时候希望动态的在android的布局中增加view,例如动态增加一个textview来显示数据为空,但是当布局较为复杂时,你希望把view加载特定的其他view的后面,这是要如何处理呢?

答案:

先看一个布局片段

Xml代码   收藏代码
  1. <RelativeLayout  
  2.          android:id="@+id/baobei_gridview"  
  3.          android:layout_width="fill_parent"  
  4.          android:layout_height="fill_parent"  
  5.          android:gravity="center_horizontal" >  
  6.   
  7.          <GridView  
  8.              android:id="@+id/products"  
  9.              android:layout_width="match_parent"  
  10.              android:layout_height="match_parent"  
  11.              android:gravity="top|left"  
  12.              android:horizontalSpacing="6.53dp"  
  13.              android:listSelector="#00ffffff"  
  14.              android:numColumns="2"  
  15.              android:padding="6dp"  
  16.              android:scrollbars="none"  
  17.              android:scrollingCache="true"  
  18.              android:stretchMode="columnWidth"  
  19.              android:verticalSpacing="11.76dp"   
  20.              android:visibility="visible">  
  21.          </GridView>  
  22.            
  23.          <LinearLayout  
  24.              android:id="@+id/catalogContainer"  
  25.              android:layout_width="173dp"  
  26.              android:layout_height="177dp"  
  27.              android:layout_alignParentTop="true"  
  28.              android:layout_centerHorizontal="true"  
  29.              android:background="@drawable/oms_catalog_bg"  
  30.              android:padding="3dp"  
  31.              android:visibility="gone" >  
  32.              <ListView  
  33.                  android:id="@+id/catalogs"  
  34.                  android:layout_width="match_parent"  
  35.                  android:layout_height="match_parent"   
  36.                  android:scrollbars="@null">  
  37.              </ListView>  
  38.          </LinearLayout>  
  39.   
  40.          
  41.      </RelativeLayout>  

 

该布局由relativelayout,girdview,linearlayout组成。relativelayou是其余2个布局的父容器。

 

接下来看下动态增加view的代码

Java代码   收藏代码
  1. if (emptyView == null) {  
  2.                         emptyView = new TextView(context);  
  3.                         emptyView.setText("没有搜索到结果");  
  4.                         LayoutParams emptyParam = new RelativeLayout.LayoutParams(  
  5.                                 LayoutParams.WRAP_CONTENT,  
  6.                                 LayoutParams.WRAP_CONTENT);  
  7.                         ((android.widget.RelativeLayout.LayoutParams) emptyParam)  
  8.                                 .addRule(RelativeLayout.CENTER_IN_PARENT);  
  9.                         ((ViewGroup) baobeis.getParent()).addView(emptyView, 1,  
  10.                                 emptyParam);  
  11.                         baobeis.setEmptyView(emptyView);  
  12.                     }  

 

该代码中的baobeis.getParent()指的就是relativelayout,当addview进去的时候,我们使用addView的一个构造方法

public void addView (View child, int index, ViewGroup.LayoutParams params)

这里最主要的参数就是index,标示的是希望将view增加到哪个view的下面。从刚才的布局代码片段看,以父布局relativelayout算起,

即 

RelativeLayou  index=0;

GridView index=1;

LinearLayout index=2;

你如果给index填写大于2的值将会报错。因为在当前父容器下,没有大于3的同级view

当然你还可以填写index=-1,-1的意思是,将view加到父容器中所有容器的最下面,也就是linearlayout的下面

 

如果你不能理解,那么你可以想下,这个css中,z-index有点象的。

动态添加和删除View:Android开发核心技能 本文还有配套的精品资源,点击获取 简介:在Android开发中,动态添加和删除View是构建可扩展用户界面的关键需求。本教程将详细指导如何在Java环境中实现这一过程,涵盖从基础概念到性能优化的各个方面。 1. Android View与ViewGroup基本概念 Android View与ViewGroup基本概念 在Android开发中,View是... 阅读详情

相关推荐

海康VisionMaster表面缺陷滤波实战:从参数调优到工业检测避坑指南

本文深入探讨海康VisionMaster表面缺陷滤波技术在工业检测中的应用,从参数调优到ROI绘制与Blob分析的协同策略,提供金属外壳、锂电池铝壳等复杂表面的缺陷检测实战指南。通过多级滤波架构和动态ROI生成法,显著提升检出率至98.7%,误检率低于0.5%,为工业质检提供智能化解决方案。

ujm5678901的博客 324

Android 如何改变View的绘制层级

Android 改变View的绘制层级

leilifengxingmw的博客 6296

svn co --depth和svn up --set-depth 只check out下一层文件 只更新指定文件 只更新下一层的用法

svn的工程可能很大 有时我们只需要部分文件即可 这里介绍几个命令 1.svn co(check out) --depth --depth=empty,files,immediates,infinity 假设某svn结构如下 svn://root/PRO/A_dir/a svn://root/PRO/B_dir/b svn://root/PRO/c_file svn co --depth=emptysvn://root/PRO 此时只会在本地check out出 PRO/的空目录。 sv.

cy413026的博客 1万+

android分析view层级,Android 初级面试者拾遗(前台界面篇)之 View 和 ViewGroup

View 和 ViewGroupView 是 Android 中最基本的 UI 组件,在屏幕上绘制一块矩形区域。ViewGroup 是一种特殊的 View,它可以包含多个子 View 和子 ViewGroup,用于放置、组织、管理视图结构。常用控件和布局的继承结构:LinearLayout 和 RelativeLayout 性能对比Android Project 默认生成的 avtivity_ma...

weixin_42122878的博客 2889

别再搞混了!MATLAB通信仿真中EbN0转SNR的保姆级公式推导与避坑指南

本文深入解析MATLAB通信仿真中EbN0与SNR转换的核心公式,揭示数字仿真与理论系统的关键差异。通过真实案例展示错误参数设置导致的隐蔽问题,并提供完整的参数自查清单和正确实现代码,帮助工程师和学生避免常见错误,确保仿真结果准确可靠。

weixin_28746223的博客 348

Ubuntu无桥接模式或连不上网(详细解决方法

目录 问题1:Ubuntu没有未桥接的主机网络适配器 解决方法 1.打开VMware安装目录下的文件 ​编辑2.右键安装以上三个文件 3.打开网络状态属性,找到VMware bridgeProtocol,点击安装 问题2.Ubuntu桥接模式连不上网 1.win+r打开cmd终端,输入ipconfig /all 2.记录以下数据 3.打开VMware网络设置 问题1:Ubuntu没有未桥接的主机网络适配器 VMWare安装之后,虚拟网络一直使用默认配置 VMnet0为...

m0_65592409的博客 6062

Android初学习 - 在布局中动态添加view的两种方法

一、说明 添加视图文件的时候有两种方式:1、通过在xml文件定义layout;2、java代码编写 二、前言说明 1.构造xml文件 2.LayoutInflater 提到addview,首先要了解一下LayoutInflater类。这个类最主要的功能就是实现将xml表述的layout转化为View的功能。为了便于理解,我们可以将它与findViewB

myKernel 3171

大白话讲解Numpy中什么是一维、二维、三维数组,以及5种创建方式

NumPy中提供了多种创建数组的方式,其中最基本的方式就是通过array()函数创建数组在使用该函数时直接传入列表或元组即可。 通过array()函数分别创建一维数组、二维组和三维数组,那么什么是维度呢?一维、二维、三维有什么区别? 1、什么是维度? 维度可以理解为描述数据的一种 “方向” 或者 “层次”。在数组中,维度的数量决定了我们需要用多少个索引来访问一个元素 2、一维、二维、三维的区别? (1)一维:一维数组就像是一条直线上排列的一组数据,例如: a = np.array([1, 2

1361

android 动态设置约束,ConstraintLayout动态添加View,改变约束

使用的ConstraintLayout版本implementation 'androidx.constraintlayout:constraintlayout:1.1.3'如果不使用androidx的话可以使用下面的版本implementation 'com.android.support.constraint:constraint-layout:1.1.3'注意:使用不同的ConstraintL...

weixin_29369347的博客 5452

YOLOv11改进,YOLOv11添加ASFF检测头,并添加小目标检测层(四头检测),适合目标检测、分割等任务,全网首发

YOLOv11改进,YOLOv11添加ASFF检测头,并添加小目标检测层(四头检测),适合目标检测、分割等任务,全网首发

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 4735

一站式讲解Wireshark网络抓包分析的若干场景、过滤条件及分析方法

本文详细讲解常用的抓包工具、抓包分析的网络场景、分析抓包时的多种过滤条件以及如何结合常用的协议去分析排查问题,给大家提供一个借鉴或参考。

dvlinker的技术专栏 5万+

Android 如何动态添加 View 并显示在指定位置。

引子纯爱小说 https://m.shupu.org/ 最近,在做产品的需求的时候,遇到 PM 要求在某个按钮上添加一个新手引导动画,引导用户去点击。作为 RD,我哗啦啦的就写好相关逻辑了。自测完成后,提测,PM Review 效果。 看完后,PM 提了个问题,这个动画效果范围能不能再大一点?PM 解释到按钮本身大小不是很大,会导致引导效果不够明显,也会导致用户的点击欲望不够。我想了想,...

爱无止 2205

【深度学习新浪潮】为什么OpenClaw这么吃token?

OpenClaw 高 Token 消耗的核心是 Agent 多轮思考、工具调用上下文累积,以及平台内置的模板/多模型协同开销;PD 分离在 OpenClaw 中可针对性解决长上下文 Prefill 阻塞、KV Cache 复用低效问题,是提升其推理效率的核心优化手段,主要落地在长上下文处理与生成阶段解耦、KV Cache 集中管理、动态资源调度三个方向。

专注:太空算力、AI infra、异构调度、大模型成本工程 418

android 改变view层次,android在布局中动态增加view时的层级控制

问题:我们有时候希望动态的在android的布局中增加view,例如动态增加一个textview来显示数据为空,但是当布局较为复杂时,你希望把view加载特定的其他view的后面,这是要如何处理呢?答案:先看一个布局片段:Xml代码 android:id="@+id/baobei_gridview"android:layout_width="fill_parent"android:layout_h...

weixin_36282765的博客 2556

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android 动态布局挤在一起,android在布局中动态增加view时的层级控制

问题:我们有时候希望动态的在android的布局中增加view,例如动态增加一个textview来显示数据为空,但是当布局较为复杂时,你希望把view加载特定的其他view的后面,这是要如何处理呢?答案:先看一个布局片段:Xml代码 android:id="@+id/baobei_gridview"android:layout_width="fill_parent"android:layou...

weixin_28771631的博客 273

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局

package com.Layout.main; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.widget.Button; import android.widget.Fr

drrlalala的专栏 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

安卓性能优化之懒加载(View的懒加载)

1、背景:为什么需要View的懒加载。           我们在做安卓项目的时候,经常会有一个使用场景:需要在运行时根据数据动态决定显示或隐藏某个View和布局。       上述场景,我们通常的解决方案就是:就是把可能用到的View先写在布局里,再初始化其可见性都设为View.GONE,然后在代码中根据数据动态的更改它的可见性。       虽然这样的实现,逻辑简单而且控制起来比较灵活;...

vic6329063的博客 4439

Android任意指定位置动态增删View

我们经常会遇到需要动态增加删除view的情况, 通常使用   addView(addView); 方法来动态增加view,但是有个问题,这个方法会将新增的view默认加到布局界面的末尾, 也就是屏幕的最下方。 但是我们可能需要加载到顶端,或者不是最下方的位置,那么怎么实现呢? 大家可以把自己的想法写到留言区互相交流。 我这里想到一个很简单的实现方法,就是在布局文件中你希望动态新增...

u012449548的博客 2216

Android 动态 添加 View

比如你要在当前Activity里的布局里添加一个TextView这个TextView 可以是new出来的也可以是打气筒打出来的 子View弄出来了父View呢因为是直接在根View里添加,有一个方法叫addContentView但是,如果这样的话是控制不了子View的位置的所以,要在根布局里最外层的VIewGrop里添加一个id然后通过findViewById来找到这个父View我们希望这

知言而易行 493

android线性布局控制间隙,安卓:线性布局之间的水平差距

我有多个线性布局嵌套(线性布局 - >滚动视图布局 - >多个线性布局)。我的目标是显示ImageView(与图像)大小根据设备屏幕分辨率动态更改。每个内部布局都有ImageView控件。我写了调整每个ImageView在运行时适合屏幕。在设计时,内部线性布局显示为没有横向间隙,但是在朗姆酒时间由于动态代码,它们是线性布局之间的差距。 Design display___________...

weixin_42579969的博客 449

Android获取View的宽高与View.measure详解

Android获取View的宽高与View.measure详解

不能说的秘密的博客 1万+

android访问动态增加控件,android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局...

package com.Layout.main;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.widget.Button;import android.widget.FrameLayout;import android.widget.TextView;...

weixin_30110807的博客 874

android:代码中动态添加子布局

在应用中有时候需要通过某些点击效果动态地添加布局,而不是直接加载完整的xml布局文件,这时就可以在代码中实现。 首先,如果对子布局的位置有要求时,可以在主布局中你希望放置的地方设置一个“标记”,记得设置id: [html] view plain copy  print? LinearLayout    //用来装子布局       andr

一颗西瓜的博客 1392

安卓RelativeLayout实战:页面意图与布局关系的深度解析

Android布局系统本质是将页面交互意图映射为UI空间关系的技术体系。从FrameLayout的坐标原点、LinearLayout的线性流式、RelativeLayout的关系驱动,到ConstraintLayout的约束网络,不同布局引擎对应不同的测量复杂度与语义表达能力。RelativeLayout凭借`layout_above`、`layout_below`等直观属性,在TV端焦点导航、横竖屏适配、动态关系调整等场景中展现出不可替代的语义清晰性与低学习成本。其与Activity/Fragment的生

weixin_33946605的博客 436

Android开发笔记----界面布局及在布局上动态地增加删除子元素

1.re布局 这是一个相对布局,既可以跟父级的容器相对,也可以跟子元素相对。 跟子元素想对的时候,ru

liang1232015的博客 3178
上一篇: Recyclerview的getChildAt(position)方法获取可见第一条的view返回null;
下一篇: javaAPI深入理解(1)如何截断一个List以及List.subList()方法的坑
wangpanbaoding
博客等级 码龄18年 42粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值