android - 如何知道 RecyclerView 何时完成放置项目?

标签 android android-cardview android-recyclerview

我有一个位于 CardView 内的 RecyclerViewCardView 的高度为 500dp,但如果 RecyclerView 较小,我想缩短此高度。 所以我想知道当 RecyclerView 第一次完成放置它的项目时是否有任何监听器被调用,从而可以将 RecyclerView 的高度设置为CardView 的高度(如果小于 500dp)。

最佳答案

我还需要在我的回收器 View 完成所有元素的膨胀后执行代码。我尝试在我的适配器中 checkin onBindViewHolder,如果位置是最后一个,然后通知观察者。但此时,回收站 View 仍未完全填充。

作为 RecyclerView实现 ViewGroup, this anwser很有帮助。您只需添加一个 OnGlobalLayoutListener到recyclerView:

View recyclerView = findViewById(R.id.myView);
recyclerView
    .getViewTreeObserver()
    .addOnGlobalLayoutListener(
        new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                // At this point the layout is complete and the
                // dimensions of recyclerView and any child views 
                // are known.
                recyclerView
                    .getViewTreeObserver()
                    .removeOnGlobalLayoutListener(this);
            }
        });

关于android - 如何知道 RecyclerView 何时完成放置项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30397460/

相关文章:

android GPS 在按钮点击时启用

android - 短信收件箱 - ListView

android - RecyclerView 项目 wrap_content 宽度

android - 我应该如何处理 "implementation method not found"错误?

android - 去除 CardView 的圆角

android - CardView 忽略 android :clipChildren ="false"

android - 如何在 CardView 中显示 MapView?

android - 出于性能目的,在 AppCompat 1.4.0 及更高版本的 textview 中禁用 emoji2

android - 如何调用 startActivityForResult 方法从另一个应用程序获取结果