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

如何在onBindViewHolder中获取RecyclerView单元格的高度/宽度?

在onBindViewHolder方法中获取RecyclerView单元格的高度/宽度可以通过以下步骤实现:

  1. 首先,确保你的RecyclerView已经设置了LayoutManager,例如LinearLayoutManager或GridLayoutManager。
  2. 在onBindViewHolder方法中,可以通过holder.itemView获取到当前绑定的ViewHolder对应的视图。
  3. 使用ViewTreeObserver来监听视图的布局完成事件,以便在视图测量完成后获取其高度/宽度。
  4. 在ViewTreeObserver的回调方法中,可以通过view.getHeight()或view.getWidth()方法获取到视图的高度/宽度。

下面是一个示例代码:

代码语言:txt
复制
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
    // 获取当前绑定的视图
    final View itemView = holder.itemView;

    // 监听视图的布局完成事件
    itemView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            // 获取视图的高度/宽度
            int height = itemView.getHeight();
            int width = itemView.getWidth();

            // 在这里可以使用获取到的高度/宽度进行相应的操作

            // 移除布局监听器,避免重复调用
            itemView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
    });

    // 其他绑定操作...
}

这样,你就可以在onBindViewHolder方法中获取到RecyclerView单元格的高度/宽度了。根据具体的需求,你可以在获取到高度/宽度后进行相应的操作,例如动态调整视图的大小、设置图片的尺寸等。

腾讯云相关产品中,与RecyclerView单元格高度/宽度获取相关的产品和服务可能包括:

  • 腾讯云移动应用分析(Mobile Analytics):提供移动应用数据分析和统计服务,可以帮助开发者了解用户行为和使用情况,从而优化应用的布局和设计。了解更多信息,请访问:腾讯云移动应用分析

请注意,以上仅为示例,具体的产品选择和推荐应根据实际需求和场景来确定。

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

相关·内容

何在onCreate获取View高度宽度

何在onCreate获取View高度宽度 在开发过程中经常需要获取到View宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成,一个measure过程,一个layout过程。...而这一切是发生在onCreate方法之后。所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确。...那应该怎么onCreate获取View宽高呢?...开发者可以通过View.post()方法来获取到View宽高,该方法传递一个Runnable参数,然后将其添加到消息队列,最后在UI线程执行。

5.3K20

OC获取一串字符串高度宽度确定)或宽度高度确定)

https://blog.csdn.net/u010105969/article/details/52937475 项目中我们有时会需要根据字符串来确定UILabel宽度高度,如我们经常遇到单元格自适应问题...如果是要动态知道UILabel高度,那么我们直接利用单元格自适应高度就可以。如果我们要获取UILabel宽度(为什么要获取UILabel宽度?...:CGSizeMake(MAXFLOAT, 17)];  CGFloat w =size.width; 其实这个方法只是先获取字符串(字符串字体大小是确定了size再确定其宽度。...从方法可以看出我们固定了字符串高度为17,如果想要获取字符串高度,那么固定宽度就好了。...NSStringDrawingUsesLineFragmentOrigin NSStringDrawingUsesFontLeading attributes:attribute context:nil].size; 大家再看看单元格高度自适应是不是有什么想法啊

2.4K30

android如何获取view在布局高度宽度详解

前言 可能很多情况下,我们都会有在activity获取view 尺寸大小(宽度高度需求。面对这种情况,很多同学立马反应:这么简单问题,还用你说?你是不是傻。。...然后立马写下getWidth()、getHeight()等方法,洋洋得意就走了。然而事实就是这样吗?实践证明,我们这样是获取不到View宽度高度大小。...当我们在 onCreate() 方法获取某个 View 组件宽度高度,直接调用 getWidth()、getHeight()、getMeasuredWidth()、getMeasuredHeight...,会被多次调用,因此需要在获取到视图宽度高度后执行 remove 方法移除该监听事件。...像在自定义,加载一次布局,应该选中最后一个post方法最为使用。 另外还用,应该是第三种方式,一般在外部使用,比如需要等待Recyclerview绘制完成后进行操作。

5.7K10

【Android从零单排系列二十五】《Android视图控件——RecyclerView

RecyclerView基本介绍 RecyclerView是Android支持库一个强大视图容器,用于显示和管理大量数据集合列表或网格。它是目前推荐使用替代方式之一。...二 RecyclerView使用方法 在项目的build.gradle文件添加RecyclerView依赖: implementation 'androidx.recyclerview:recyclerview...android:layout_width和android:layout_height:设置RecyclerView宽度高度。...增强布局管理器(LayoutManager):RecyclerView支持不同类型布局管理器,线性布局、网格布局、瀑布流布局等,可以轻松实现各种列表和网格展示方式。...使用RecyclerView可以更好地管理和展示大量数据,同时也能够根据需要进行高度定制。它成为Android应用开发中常用UI组件,广泛应用于各种应用场景,社交媒体、新闻阅读、电子商务等。

27810

详解RecyclerView设置背景图片长宽一样(以GridLayoutManager为例)

使用RecyclerView过程,由于设置了LayoutManager关系,控件(background)往往不能通过指定长宽为match_parent、wrap_content来实现长宽大小相同...面对问题: 以指定GridLayout(Horizental)布局为例:控件实际宽度受制于一行分割为几列,粗略来说宽度 = RecyclerView宽度 ÷ 列数由于这个过程是运行时确定,长度预先并不知道宽度的确切值...②长度指定为“wrap_content” —— 当背景为矢量图,长度为对应drawable文件确定android:height ;当背景为点阵图,长度为该图分辨率宽度。...根据上面的公式 宽度 = recyclerView宽度 ÷ 列数且recyclerView宽度 = gridLayoutManager.getWidth();列数 = gridLayoutManage.getSpanCount...我们来看一下上述设置实际效果: ? 哎哎哎!虽然效果有改善,怎么还是长方形?! 静下心仔细想一下,我们获取宽度真的是logo宽度吗? ? 刚才算出来值怎么看都像是①号距离啊喂!

1.5K10

【Android 事件分发】ItemTouchHelper 实现拖动排序

getMoveThreshold 方法 , 设置用户拖动距离 , 组件在宽度 / 高度 上移动超过该比例 , 就认为拖动触发, 执行拖动相关操作 ; 设置是比例值, 返回值为 0.9 , 就意味着滑动宽度...0.9f , 在 getMovementFlags 方法设置拖动方向是上下拖动 , 因此在该案例 , 上下拖动幅度必须要在 0.9 倍高度 , 拖动排序功能才能生效 ; 下面的操作 , 拖动幅度没有达到...条目组件 高度 0.9 倍 , 拖动排序功能没有触发 ; 下面的操作 , 拖动幅度超过了 条目组件 高度 0.9 倍 , 拖动排序功能 触发 ; 4、设置拖动排序触发操作 重写 ItemTouchHelper.Callback..., 是拖动后位置条目 ; 可以通过调用 RecyclerView.ViewHolder getAdapterPosition 方法 , 可以获取该条目的索引值 ; public class...从布局获取 RecyclerView recycler_view = findViewById(R.id.recycler_view); //2 .

2.1K10

Android开发之漫漫长途 XV——RecyclerView

RecyclerView提供了一种插拔式体验,高度解耦,异常灵活,通过设置它提供不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。...* * 可以看出,RecyclerView将ListViewgetView()功能拆分成了onCreateViewHolder()和onBindViewHolder()。...(这个大小指的是高度宽度) 那么接着onDraw()以及onDrawOver(),两者作用是什么呢以及两者之间有什么关系呢?...缓存策略最重要方法,该方法是从RecyclerView回收机制实现类Recycler获取合适View,或者新创建一个View View getViewForPosition(int position...下篇预告 下篇呢,也是一篇干货,上面两篇文章,我们数据都是虚拟,静态,而实际开发数据通常都是从服务器动态获得,这也产生了一系列问题,列表下拉刷新以及上拉加载、ListVIew异步获取图片显示错位等等问题

2.2K20

构建Recyclerview DSL

这是一个大概效果,Recyclerview DSL,我们可以用DSL风格去配置Item被如何加入到Rec,各个Item风格是什么样子,具有很大灵活性和拓展性。...Adapter里面包含着ViewHolder创建和绑定逻辑,这样子在大规模开发迭代中会遇到一个问题是:Adapter逻辑越堆积越重,比如说在 OnBindViewHolder方法包含着重度业务逻辑...于是我开始思考在Recyclerview架构,确定一类视图到底需要什么?哪些东西可以用一个最小集合来定义一类视图?...我们来梳理一下: 展现给用户看东西 = 视图 + 填充数据 视图 <- OnCreateViewHolder相关逻辑 数据填充 <- OnBindViewHolder把数据Set到View 所以说...一个理论前提是:在高度封装情况下,ViewType并没有具体语义,它作用在于区分不同 ItemController。

87910

Android RecyclerView 使用完全解析 体验艺术般控件

整体上看RecyclerView架构,提供了一种插拔式体验,高度解耦,异常灵活,通过设置它提供不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果...如果你不清楚它是怎么做到读取系统属性用于自身。 获取到listDivider以后,该属性值是个Drawable,在getItemOffsets,outRect去设置了绘制范围。...有一点需要注意,如果是横向时候,item宽度需要注意去设置,毕竟横向宽度没有约束了,应为控件可以横向滚动了。 如果你需要一样横向滚动GridView,那么恭喜你。...其实你什么都不用做,只要使用StaggeredGridLayoutManager我们就已经实现了,只是上面的item布局我们使用了固定高度,下面我们仅仅在适配器onBindViewHolder方法为我们...通过简单改变下LayoutManager,就可以产生不同效果,那么我们可以根据手机屏幕宽度去动态设置LayoutManager,屏幕宽度一般,显示为ListView;宽度稍大显示两列GridView

1.6K10

【Android 事件分发】ItemTouchHelper 实现侧滑删除

getSwipeThreshold 方法 , 设置用户滑动距离 , 设置是比例值, 返回值为 0.5 , 就意味着滑动宽度/高度一半, 才触发侧滑 onSwiped 方法 ; public class...Callback extends ItemTouchHelper.Callback { /** * 用户滑动距离, 设置是比例值, 返回值为 0.5 , 就意味着滑动宽度/高度一半...因此在该案例 , 滑动幅度在水平方向上超过 0.5 倍条目组件宽度 , 侧滑删除才能生效 ; 下面的操作 , 滑动在水平方向上没有超过组件宽度 0.5 倍 , 滑动删除不生效 ; 下面的操作...从布局获取 RecyclerView recycler_view = findViewById(R.id.recycler_view); //2 ...., 返回值为 0.5 , 就意味着滑动宽度/高度一半, 才触发侧滑 onSwiped 方法 * @param viewHolder * @return */ @Override

54520
领券