首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

addView添加了视图,但没有显示该视图

基础概念

addView 是 Android 开发中用于向布局中动态添加子视图的方法。通常在运行时根据需要添加视图,而不是在 XML 布局文件中静态定义。

相关优势

  1. 动态性:可以在运行时根据用户操作或其他条件动态添加或移除视图。
  2. 灵活性:适用于需要根据数据变化动态更新 UI 的场景。
  3. 复用性:可以创建可复用的视图组件,提高代码的可维护性。

类型

addView 方法通常用于以下几种情况:

  1. LinearLayout:按顺序添加子视图。
  2. RelativeLayout:根据相对位置添加子视图。
  3. FrameLayout:将子视图叠加在一起。
  4. ConstraintLayout:根据约束条件添加子视图。

应用场景

  • 动态加载数据并显示在列表或网格中。
  • 根据用户操作动态显示或隐藏某些视图。
  • 实现复杂的 UI 布局,如仪表盘或自定义控件。

可能遇到的问题及解决方法

视图未显示的原因

  1. 布局参数未设置:添加视图时未设置正确的布局参数,导致视图无法正确显示。
  2. 父布局问题:父布局的尺寸或属性可能导致子视图无法显示。
  3. 视图层级问题:其他视图遮挡了新添加的视图。
  4. 视图初始化问题:视图在添加前未正确初始化。

解决方法

  1. 设置布局参数
  2. 设置布局参数
  3. 检查父布局
  4. 检查父布局
  5. 调整视图层级
  6. 调整视图层级
  7. 确保视图初始化
  8. 确保视图初始化

参考链接

通过以上方法,可以解决 addView 添加视图但未显示的问题。确保布局参数正确设置,父布局可见,并且视图层级正确,通常可以解决大多数显示问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

屏幕宽高不够,滚动视图ScrollView来凑

属性值有以下几个: outsideInset:ScrollBar显示视图(view)的边缘,增加了view的padding. 如果可能的话,ScrollBar仅仅覆盖这个view的背景。...insideInset:ScrollBar显示在padding区域里面,增加了控件的padding区域,ScrollBar不会和视图的内容重叠。...insideOverlay:ScrollBar显示在内容区域里面,不会增加了控件的padding区域,ScrollBar以半透明的样式覆盖在视图(view)的内容上。...ScrollView的几个常用方法有: addView (View child):添加子视图。如果事先没有给子视图设置layout参数,会采用当前ViewGroup的默认参数来设置子视图。...addView (View child, int index):添加子视图。如果事先没有给子视图设置layout参数,会采用当前ViewGroup的默认参数来设置子视图

3.1K60

02.视频播放器整体结构

这个每个实现类则都可以拿到这些属性呢 在BaseVideoController中使用LinkedHashMap保存每个自定义view视图,添加则put进来后然后通过addView视图添加到控制器中,...符合开闭原则 适配器模式 这个也是事后补救模式,但是在库中,没有尝试这种方式。...比如外部开发者想加一个广告视图,这个时候肯定需要给它播放器的状态 添加了自定义播放器视图,比如添加视频广告,可以选择跳过,选择播放暂停。...这就涉及view视图的层级性。控制view视图显示和隐藏是特别重要的,这个时候在自定义view中就需要拿到播放器的状态 举一个简单的例子,基础视频播放器 添加了基础播放功能的几个播放视图。...如何控制它们的显示隐藏切换呢? 在addView这些视图时,大多数的view都是默认GONE隐藏的。

1.7K10
  • Android开发笔记(二十一)横幅轮播页Banner

    showNext : 显示下一个视图。 showPrevious : 显示上一个视图。 setInAnimation : 设置视图的移入动画。...2、自动翻页 ViewPager没有可以设置自动翻页的方法,得通过Handler机制来定时调用翻页动作。...3、多个子页面视图的适配器 ViewPager可调用setAdapter方法统一设置子页面,ViewFlipper来源自FrameLayout,所以没有适配器的说法。...ViewFlipper本质是多个子视图共存于一个FrameLayout,只是在某个时刻只显示其中的一个子视图,因此ViewFlipper的子页面是一个个addView上去的。...5、多页面的的页码指示器 ViewPager有对应的PagerTabStrip和PagerTitleStrip,可以自动显示页码文字;ViewFlipper则没有相关的页码类,如果需要的话,只能自己定义一个新类

    3.6K30

    Android加载loading对话框的功能及实例代码(不退出沉浸式效果)

    ; private boolean isShowing = false; /**显示全屏的加载动画*/ public void alertLoadingDialog(){ if (!...WindowManager.LayoutParams.MATCH_PARENT; // forewarnLayoutParams.windowAnimations = R.style.anim_view;// 添加进入动画 // 添加布局视图...addView弹出效果 原理没啥可说的,直接用就完了,需要注意的是,addView和removeView需要一一对应,以上代码已经加了判断处理。还需要添加权限,不然会报错。...removeViewImmediate()是通知View立刻调用View.onDetachWindow(),这说明这个方法是通过一个监听或者观察者来实现的,因为线程的同步跟异步问题导致activity销毁了,view...还没有被remove完,会导致窗体泄露。

    1.4K10

    Android高频面试专题 - 提升篇(一)Window、View、Activity

    WindowManager为这个三类进行了细化,把每一种类型都有int常量标识,WmS进行窗口叠加的时候会按照int常量的大小分配不同层,int值越大层位置越靠上面。...即使Activity的布局已经成功添加到DecorView中,DecorView此时还没有添加到Window中 ActivityThread的handleResumeActivity方法中,首先会调用Activity...的onResume方法,接着调用Activity的makeVisible()方法 makeVisible()中通过WindowManager.addView()完成了DecorView的添加和显示两个过程...ViewRootImpl中调用performTraversals方法,然后便开始测量布局绘画了,界面才得以显示出来,这就是View的绘制流程起点。 10、Token是什么?...(mDecor) Dialog必须采用Activity的Context,因为有应用token(Application的Context没有应用token),也可以将Dialog的Window通过type设置为系统

    2.4K20

    Window刨根问底

    首先,它是一个窗口,是Android中唯一的展示视图的中介,所有的视图都是通过Window来呈现的,无论是Activity,Dialog或Toast,他们的视图都是附加到WIndow上的,所以Window...,其实是先到DecorView的,具体逻辑可以自己翻下源码,有机会也可以出篇文章讲讲~ 各种视图显示。...比如Activity的setContentView,Dialog,Toast的显示视图等等都是通过Window完成的。 Window的分层和类别?...然后view怎么显示到界面上的呢,Activity可没有show方法哦?其实就是通过setContentView方法。方法主要做了以下几件事: 创建DecorView,如果不存在的话。...到这里,一个有完整view结构的DecorView就创建出来了,但是它还没有显示到手机界面上,也就是没有被添加到Window中。

    49430

    Android View 源码解析(一) - setContentView

    return contentParent; } 方法的主要功能为 根据窗口的style为窗口选择不同的窗口根布局文件 将mDecor作为根视图将窗口布局添加,获取id为content的FrameLayout...requestFeature() must be called before adding content"); } ... } onContentChanged方法 在PhoneWindow中没有重写...将作为整个应用窗口的根视图 根据根据Feature等style theme创建不同的窗口修饰布局文件 并且通过findViewById获取Activity布局文件存放的地方 将Activity的布局文件添加至...id为content的FrameLayout内 执行到当前页面还没有显示出来 Activity页面显示 我们都知道Activity的实际开始于ActivityThread的main方法 当方法调运完之后会调用该类的...performLaunchActivity方法来创建要启动的Activity组件 这个过程中还会为Activity组件创建窗口对象和视图对象 当组件创建完成后用过调用该类的handleResumeActivity

    72540

    带着问题写React Native原生控件--Android视频直播控件

    ReactImageView是这个视图管理类所管理的对象类型,这应当是一个自定义的原生视图。getName方法返回的名字会用于在JavaScript端引用这个原生视图类型。...方法,直播控件与视频播放控件没有渲染出来,进一步调试发现,调用addview之后视频控件本身的onLayout方法没有调用。...后面遇到播放控件中发现其测量方法没有被调用,导致后续onLayout等方法无法调用,手动调用测量方法。...} mUpdateLiveView = true; mHandler.sendEmptyMessage(this.mMode); 上传控制按钮不见了: 后面发现是被叠加了...,也就是视频播放控件后面添加的因此处于最上层,类似css中的z-index属性,坐标轴中的z轴,查文档发现addView之后会回调onViewAdded()方法,翻译下控件已经添加了,那么这里重新设置z-index

    5.3K80

    04.视频播放器通用架构实践

    这个每个实现类则都可以拿到这些属性呢 在BaseVideoController中使用LinkedHashMap保存每个自定义view视图,添加则put进来后然后通过addView视图添加到控制器中,...这就涉及view视图的层级性。控制view视图显示和隐藏是特别重要的,这个时候在自定义view中就需要拿到播放器的状态 举一个简单的例子,基础视频播放器 添加了基础播放功能的几个播放视图。...如何控制它们的显示隐藏切换呢? 在addView这些视图时,大多数的view都是默认GONE隐藏的。...比如当视频初始化时,先缓冲则显示缓冲view而隐藏其他视图,接着播放则显示顶部/底部视图而隐藏其他视图 比如有时候需要显示两种不同的自定义视图如何处理 举个例子,播放的时候,点击一下视频,会显示顶部title...视图和底部控制条视图,那么这样会同时显示两个视图

    2.6K00

    Android开发笔记(一百四十二)平滑翻页的书籍浏览

    openPage:打开PDF文件的指定页面,方法返回一个PdfRenderer.Page对象。 close:关闭PDF文件。...close:关闭pdf页。 总而言之,PdfRenderer的作用就是把一个pdf文件转换为若干个图片,然后开发者可将这些图片展示到手机屏幕上。...在Android的控件家族当中,比较接近上下层叠方式的是栈视图StackView,它的前后两项视图有部分是重叠在一起的,然后可以通过上下滑动来切换当前显示的顶层视图。...StackView的使用方式类似于ListView,都是调用setAdapter方法设置一组子项,多出来的属性只有loopViews,属性用于控制是否循环显示子项视图。...ViewPager+Fragment的三页缓存机制; 页面视图主要负责三块工作: 1、将当前页面高亮显示,其它页面变暗显示; 2、按照用户的手势触摸,将当前页面滑动相应的距离; 3、在用户松开手势时,如果当前页面滑动距离不超过页面宽度的二分之一

    1.2K10

    手把手教你读懂源码,View的加载流程详细剖析

    我们都知道,在开发Android应用程序时,经常会在Activity的onCreate方法里调用setContentView方法,将布局文件或者View对象传入,但是很多人并没有去分析后续是如何加载到面并显示出来的...所以其具体实现是由 Window类的实现类来完成的(后面我们会知道实现类是PhoneWindow)。...DecorView的onResourcesLoaded方法 主要就是将适配的布局文件加载进来生成root视图,调用addView方法添加到DecorView视图。...到目前为止,View只是加载到了Activity,并没有显示出来,继续研究ActivityThread的handleResumeActivity方法。...其执行的过程可简单的概括为:是否需要重新计算视图的大小(measure)、是否需要重新布局视图的位置(layout),以及是否需要重绘(Draw)。

    97990

    Android中文API——ScrollView

    TextView类也有自己的滚动功能,所以不需要使用ScrollView,但是只有两个结合使用,才能保证显示较多内容时候的效率。只有两者结合使用才可以实现在一个较大的容器中一个文本视图效果。...四、公共方法 public void addView (View child) 添加子视图。如果事先没有给子视图设置layout参数,会采用当前ViewGroup的默认参数来设置子视图。...参数 child 所添加的子视图 public void addView (View child, int index) 添加子视图。...如果事先没有给子视图设置layout参数,会采用当前ViewGroup的默认参数来设置子视图。...如果只是添加到视图,调用时显示的是旧值0。(译者注:也就是添加到视图时,oldw和oldh返回的是0)。

    4.6K30

    01.视频播放器框架介绍

    用户从wifi切换到4g网络,提示网络切换弹窗界面(当网络由wifi变为4g的时候会显示) 图片广告视图(带有倒计时消失),开始视频广告视图,非会员试看视图 弹幕视图(这个很重要),水印显示视图,倍速播放界面...这个每个实现类则都可以拿到这些属性呢 在BaseVideoController中使用LinkedHashMap保存每个自定义view视图,添加则put进来后然后通过addView视图添加到控制器中,...然后写一个播放器视图接口的具体实现类,在这里里面inflate视图操作,然后接口方法实现,为了方便后期开发者自定义view,因此需要addView操作,将添加进来的视图用map集合装起来。...此类的目的是为了在InterControlView接口实现类中既能调用VideoPlayer的api又能调用BaseVideoController的api 如何添加自定义播放器视图加了自定义播放器视图...这个时候就需要暴露监听视频播放的状态接口监听 首先定义一个InterControlView接口,也就是说所有自定义视频视图view需要实现这个接口,接口中的核心方法有:绑定视图到播放器,视图显示隐藏变化监听

    2.7K51

    android学习笔记----ListView和各种适配器简介

    ListView对象,而ListView里面没有addView方法,我们继续往父类上面找,看到了AdapterView里面有addView方法,ListView为AdapterView的子类: 直接看...(左)和设置后(右)的示范图: ArrayAdapter用法: 简单来讲一下ListView和ArrayAdapter: 我们可以将 ListView 看成由 ArrayAdapter 提供支持,没有适配器的话...我们来详细了解下这一切的原理 当你第一次将适配器与 ListView 相关联时 ListView 会询问,你想要显示多少个项?...如果不传入布局id,我们怎么才能按照这个布局来显示呢?...resource:定义此列表项视图视图布局的资源标识符。布局文件至少应包括“to”中定义的命名视图 from:将添加到与每个项关联的Map中的列名列表。 to:应该在“from”参数中显示列的视图

    2.2K10

    Android之WindowManager.addView介绍

    WindowManager 有时候我们需要在桌面上显示一个类似悬浮窗的东西,这种效果就需要用 Window 来实现,Window 是一个抽象类,表示一个窗口,它的具体实现类是 PhoneWindow,实现位于...public void removeView(View view) { mGlobal.removeView(view, false); } WindowManagerImpl并没有直接实现...Window的三大操作,而是全部交给了WindowManagerGlobal: public void addView(View view, ViewGroup.LayoutParams params,...Android 可以提供视图的地方有 Activity、Dialog、Toast,除此之外,还有一些依托 Window 而实现的视图,比如 PopUpWindow(自定义弹出窗口)、菜单,它们也是视图,...有视图的地方就有 Window,因此 Activity、Dialog、Toast 等视图都对应着一个 Window。

    1.6K20

    Android源码分析之理解Window和WindowManager

    Android中所有的视图都是通过Window来呈现的,无论是Activity,Dialog还是Toast,Window实际上是View的直接管理者。...} removeViewLocked方法中,其实是通过ViewRootImpl的die方法来进行删除的,WindowManager中提供了removeViewImmediate和removeView(方法继承自...getWindow() { return mWindow; } Window的具体实现是PhoneWindow,所以只需要查看PhoneWindow的setContentView方法,方法主要做了以下内容...); } 这里是调用了Callback的onContentChanged,由于Callback就是Activity本身,所以就是Activity的onContentChanged方法,里面是个空实现...void onContentChanged() { } 经过上面的3步,DecorView初始化完毕,Activity的布局文件也被添加到DecorView的mContentParent中,DecorView

    96930

    Android使用Toast显示消息提示框

    Toast类用于在屏幕中显示一个消息提示框,消息提示框没有任何控制按钮,并且不会获得焦点,经过一段时间后自动消失。通常用于显示一些快速提示信息,应用范围非常广泛。...Toast toast=Toast.makeText(this,”要显示的内容”,Toast.LENGTH_SHORT); (2).调用Toast类提供的方法来设置消息提示框的对齐方式、页边距、显示的内容等等...setView(View view) 用于设置将要在提示框中显示视图 (3).调用Toast类的show()方法显示消息提示框。...需要注意的是,一定要调用方法,否则设置的消息提示框将不显示。 下面通过一个具体的实例来说明如何使用Toast类显示消息提示框。 res/layout/main.xml: <?...toast.setView(ll);//设置消息提示框中要显示视图 toast.show();//显示消息提示框 } } 效果如图: ?

    4.3K20
    领券