首页 > 解决方案 > RecyclerView项目中的Android百分比屏幕宽度

问题描述

我如何让 RecyclerView 的项目高度成为屏幕高度的 30%?

我不能简单地使用 ConstraintLayout 或 PercentFrameLayout/PercentRelativeLayout,因为这些位置子布局相对于父布局,其大小可能与屏幕不匹配。

最好,我想在纯 XML 中执行此操作(并且不必使用任何 Runnables 来动态获取屏幕高度)。

编辑

澄清一下,由于很多解决方案都建议限制 RecyclerView 的高度,这不是本意。RecyclerView 仍应填充屏幕。这就是我所说的,使用屏幕宽度(而不是高度):

在此处输入图像描述

这个想法是让卡片的宽度为屏幕宽度的 33%,同时在水平滚动屏幕时保持 RecyclerView 的宽度不变。

标签: androidandroid-recyclerviewandroid-constraintlayout

解决方案


您可以覆盖LayoutManagerRecyclerView用来强制特定大小的方法之一:

recyclerView.setLayoutManager(new LinearLayoutManager(this){
    @Override
    public boolean checkLayoutParams(RecyclerView.LayoutParams lp) {
        // force height of viewHolder here, this will override layout_height from xml
        lp.height = getHeight() / 3;
        return true;
    }
});

这是假设您RecyclerView适合屏幕。

如果您想要更复杂的解决方案(直接来自 XML 的具有每个项目控制和百分比膨胀的自定义布局管理器)请参阅此答案


推荐阅读