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

android自定义视图findviewId为空且不可见

问题描述:android自定义视图findviewId为空且不可见

答案:

在Android开发中,自定义视图是一种通过继承现有视图类并添加自定义功能的方式来创建新的视图。在自定义视图中,有时候会遇到findviewId为空且不可见的情况。这种情况通常是由以下几个原因引起的:

  1. 布局文件中的视图ID错误:首先,需要确保自定义视图的布局文件中的视图ID与代码中的findviewId方法中的参数一致。如果ID不匹配,findviewId方法将无法找到对应的视图,导致返回为空。
  2. 视图可见性设置错误:其次,需要检查自定义视图的可见性设置。如果视图的可见性设置为不可见(View.INVISIBLE)或者隐藏(View.GONE),那么即使findviewId方法找到了对应的视图,也无法在界面上显示出来。
  3. 视图的查找时机不正确:另外,需要确保在正确的时机调用findviewId方法。通常,在自定义视图的初始化方法(如构造函数或onFinishInflate方法)中调用findviewId方法是比较合适的。这样可以确保在视图创建完成后进行查找,避免返回为空。

总结起来,当遇到自定义视图findviewId为空且不可见的情况时,我们需要检查布局文件中的视图ID是否正确、视图的可见性设置是否正确,并确保在正确的时机调用findviewId方法。如果问题仍然存在,可能需要进一步检查代码逻辑或者查看相关日志信息来定位问题所在。

腾讯云相关产品推荐:

腾讯云提供了丰富的云计算产品和服务,以下是一些与Android开发相关的产品推荐:

  1. 云服务器(CVM):提供了可扩展的虚拟服务器,可以用于搭建Android应用的后端服务。了解更多:https://cloud.tencent.com/product/cvm
  2. 云数据库MySQL版(CDB):提供了高可用、可扩展的MySQL数据库服务,可以用于存储Android应用的数据。了解更多:https://cloud.tencent.com/product/cdb_mysql
  3. 云存储(COS):提供了安全可靠的对象存储服务,可以用于存储Android应用中的图片、音视频等多媒体资源。了解更多:https://cloud.tencent.com/product/cos

请注意,以上推荐的产品仅为腾讯云的一部分产品,更多产品和服务可以在腾讯云官网上进行了解和选择。

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

相关·内容

详细介绍安卓布局性能优化之(include 、merge、ViewStub)

标签主要用于辅助include标签,在使用include后可能导致布局嵌套过多,多余的layout节点或导致解析变慢(可通过hierarchy viewer工具查看布局的嵌套情况) 官方文档说明:merge用于消除视图层次结构中的冗余视图...Linearlayout,那么我们又include一个LinerLayout布局就没意义了,反而会减慢UI加载速度 merge 官方文档 merge标签常用场景: 1.根布局是FrameLayout且不需要设置...3.自定义View如果继承LinearLayout(ViewGroup),建议让自定义View的布局文件根布局设置成merge,这样能少一层结点。...,也就是必须merge下的视图指定一个父亲节点. 2.因为merge不是View,所以对merge标签设置的所有属性都是无效的. 3.注意如果include的layout用了merge,调用include...上述场景,我们通常的解决方案就是:就是把可能用到的View先写在布局里,再初始化其可见性都设为View.GONE,然后在代码中根据数据动态的更改它的可见性。

1.5K10
  • 深入浅出 RecyclerView

    ,我们写 ListView 适配器,都是: 首先继承 BaseAdapter; 实现四个抽象方法; 创建一个静态 ViewHolder ; getView() 方法中判断 convertView 是否...() 返回当前最后一个可见 Item 的 position findLastCompletelyVisibleItemPosition() 返回当前最后一个完全可见 Item 的 position. scrollBy...android:divider="@android:color/black" android:dividerHeight="2dp" 而在RecyclerView里面,想实现这两种需求,稍微复杂一点,需要自己继承...这里大家可以看我已经实现好的一个封装,包括显示纯色divider、显示图片divider、divider的上下左右的间距、宽高设置 应该可以满足基本需求了:Divider.java 使用 demo 可以查看:Github 【自定义...而 RecyclerView 是返回一个 ViewHolder 并且不是直接将这个 holder 加入到视图内部,而是加入到一个缓存区域,在视图需要的时候去缓存区域找到 holder 再间接的找到 holder

    1.7K60

    自定义多状态View

    一个支持多种状态的自定义View,可以方便的切换到: 加载中视图 错误视图 数据视图 网络异常视图 内容视图 GitHub源码地址 示例apk下载 ?...//当前为视图 * MultipleStatusView.STATUS_ERROR //当前为错误视图 * MultipleStatusView.STATUS_NO_NETWORK...需要设置: 加载中视图的id必须:loading_view 视图的id必须:empty_view 错误视图的id必须:error_view 无网络视图的id必须:no_network_view...如果需要点击某个 view 进行重试, 需要设置: 视图内对应的view id:empty_retry_view 错误视图内对应的view id:error_retry_view 无网络视图内对应的...()); tv.setText(text); 更多使用方法详见 demo 示例: 简单布局 简单布局2 设置自定义视图 列表页面 列表 + 下拉刷新

    63220

    安卓第八夜 玛丽莲梦露

    " android:text="Contact Categories" /> 上面idcategory的元素新增按钮。...使用ArrayAdapter 现在,有了视图,我们要考虑数据。当我们取出多个数据后,最自然的方式是记录一个表或数组。我们需要根据小条目的布局,数据赋予显示格式。...数据赋予视图格式 我在CategoryActivity.java中使用ArrayAdapter: package me.vamei.vamei; import java.util.ArrayList...ArrayAdapter构造器接收三个参数,第一个Context,第二个说明了条目的具体构图,第三个包含有数据的表。...在ArrayAdapter中,我还可以用setTag()的方式,保存条目中具体视图元素的引用,从而减少使用findViewId()方法的次数。这也能提高应用的运行效率。

    61510

    一文帮你搞定H5、小程序、Taro长列表曝光埋点

    ,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。...目前大概有这么三种方法:1.根据接口下发分页数据估算可见元素;2.监听滚动视图的滚动事件,实时计算元素相对位置;3. 利用浏览器(或其他平台如小程序、Taro)标准API监听元素与可见区域的相交变化。...,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。...看到这里估计大家有想砸键盘的冲动,先别着急,先来分析一下为什么dataset是呢?...--来自Taro官方文档:Taro-React-dataset(https://docs.taro.zone/docs/react-overall/#dataset) 既然在回调传参中直接取值是,那该怎么获取元素上的自定义数据呢

    1.1K21

    安卓第八夜 玛丽莲梦露

    " android:text="Contact Categories" /> 上面idcategory的元素新增按钮。...使用ArrayAdapter 现在,有了视图,我们要考虑数据。当我们取出多个数据后,最自然的方式是记录一个表或数组。我们需要根据小条目的布局,数据赋予显示格式。...数据赋予视图格式 我在CategoryActivity.java中使用ArrayAdapter: package me.vamei.vamei; import java.util.ArrayList...ArrayAdapter构造器接收三个参数,第一个Context,第二个说明了条目的具体构图,第三个包含有数据的表。...在ArrayAdapter中,我还可以用setTag()的方式,保存条目中具体视图元素的引用,从而减少使用findViewId()方法的次数。这也能提高应用的运行效率。

    1.9K90

    APP性能测试—过度绘制

    下面是有关输出的几点注意事项: 沿水平轴的每个竖条代表一个帧,每个竖条的高度表示渲染该帧所花的时间(以毫秒单位),不同颜色代表不同的渲染阶段。 水平绿线表示16 毫秒。...不必要的背景可能永远不可见,因为它会被应用在该视图上绘制的任何其他内容完全覆盖。例如,当系统在父视图上绘制子视图时,可能会完全覆盖父视图的背景。...在浏览过程中,请留意您可以移除的背景,因为它们对用户不可见。...在许多容器采用同一种背景颜色的情况下,您也有机会移除不需要的背景:您可以将窗口背景设置应用的主背景颜色,并且不为其上面的任何容器定义背景值。...但是,这样做会导致过度绘制,从而降低性能,特别是在每个堆叠视图对象都是不透明的情况下,这需要将可见和不可见的像素都绘制到屏幕上。

    3.1K21

    android开发仿ios的UIScrollView实例代码

    不过android好像没有自带的这种情况。 我把这种效果称为滚无极限的scollview。...下面就来上源码: 首先,最最最重要的就是判断当前视图是否,你视图滚不滚好像没啥区别,除了android 5.0的scrollview自带了那种弧度。...好像没什么软用~~~ //视图不为即可滚动 protected void onFinishInflate() { if (getChildCount() 0) { childview...自定义 View的常用方法:   onFinishInflate() 当View中所有的子控件 均被映射成xml后触发    onMeasure(int, int) 确定所有子元素的大小    onLayout...onWindowVisibilityChanged(int) 当窗口中包含的可见的view发生变化时触发 以上是View实现的一些基本接口的回调方法,一般我们需要处理画布的显示时,重写onDraw(Canvas

    1K10

    Android ViewStub你肯定听过,但是这些细节了解吗?

    当 ViewStub 变得可见或 inflate() 的时候,布局就会被加载(替换 ViewStub)。...ViewStub只能被Inflate一次,inflate之后ViewStub对象就会被置。即某个被ViewStub指定的布局被Inflate后,就不能够再通过ViewStub来控制它了。 2....可以多次inflate()吗 ViewStub对象只可以Inflate一次,之后ViewStub对象会被置。...root and attachToRoot=true ViewStub使用场景 一般的app中大多有这么一个功能,当加载的数据时显示一个数据视图、在数据加载失败时显示加载失败对应的UI,当没有网络的时候加载没有网络的...用builder模式来自由的添加需要的状态View,可以设置有数据,数据,加载数据错误,网络错误,加载中等多种状态,并且支持自定义状态的布局。

    2.3K11

    Android原生TabLayout使用全解析,看这篇就够了

    前言 为什么会有这篇文章呢,是因为之前关于TabLayout的使用陆陆续续也写了好几篇了,感觉比较分散,且不成体系,写这篇文章的目的就是希望能把各种效果的实现一次性讲齐,所以也有了标题的「看这篇就够了」...一个横向可滑动的菜单导航ui组件 Tab:TabLayout中的item,可以通过newTab()创建 TabView:Tab的实例,是一个包含ImageView和TextView的线性布局 TabItem:一种特殊的“视图...Build.VERSION_CODES.O) { tab.view.tooltipText = "" } } 可以取消长按事件,在api26以上也可以设置提示文本...这里有一个优化的点,比如上图中的“腾讯”Tab,它是可见的,但是红点不可见,那么问题就来了,如果我们没有提示到,是很容易产生客诉的,所以这里在计算的时候也加了一个条件,就是可见范围小于80%也在计算范围之内...Lottie依赖: implementation "com.airbnb.android:lottie:5.0.1" 上一节中我们实现了自定义TabLayout的Item View,在这个自定义的布局中

    9.1K41

    Carson带你学Android:源码解析自定义View Draw过程

    前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全、思路不清晰、无源码分析、简单问题复杂化 等 今天,我将全面总结自定义View...// b. setWillNotDraw参数设置false:当自定义View继承自 ViewGroup 、且需要绘制内容时,那么设置 false,来关闭 WILL_NOT_DRAW 这个标记位。...Carson带你学Android自定义View文章系列: Carson带你学Android自定义View基础 Carson带你学Android:一文梳理自定义View工作流程 Carson带你学...Android自定义View Measure过程 Carson带你学Android自定义View Layout过程 Carson带你学Android自定义View Draw过程 Carson...带你学Android:手把手教你写一个完整的自定义View Carson带你学Android:Canvas类全面解析 Carson带你学Android:Path类全面解析

    36120
    领券