当前位置: 首页 > 知识库问答 >
问题:

RecyclerView GridLayoutManager:调整项目大小以适应屏幕并保持比例

乜安志
2023-03-14

我试图使用RecyclerView和GridLayoutManager来显示项目列表。

以下是我想要满足的标准:

  • 每行都有一个由spanCount

我发现,如果我在项目视图上设置android:layout_width=“match_parent”,那么项目宽度将通过将RecyclerView的宽度除以spanCount来设置。

问题是,我不知道如何使项目高度与布局管理器确定的宽度成比例。

我唯一的解决方案是放弃布局管理器进行测量,并在onBindViewHolder中显式设置项目尺寸:

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item_layout, parent, false);

    ViewGroup.LayoutParams p = v.getLayoutParams();

    p.width = parent.getWidth() / mLayoutManager.getSpanCount();
    p.height = p.width * 3/2;

    v.setLayoutParams(p);

    return new MyViewHolder(v);
}

我将感谢任何能帮助我改进解决方案的建议。


共有1个答案

经博延
2023-03-14
匿名用户

如何在您的item_layoutxml中使用ConstraintLayout。约束布局允许您将高度设置为宽度的比例。

例如:

    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintDimensionRatio="3:2"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

    </android.support.constraint.ConstraintLayout>

因此,当您使用app:layout_constraintDimensionRatio=“3:2”时,您将2个高度设置为3个宽度的比率。

无论跨度计数是多少,这都应该有效

 类似资料:
  • 我有一个带高度的:match_parent,它在adapter中以固定高度垂直显示16个项目。除了屏幕大小不同之外,一切都很好。在大屏幕上,16个项目显示后,底部仍留有一个空间,而在小屏幕手机上,它完全适合底部。我正在寻找一种方法,可以将列表项的高度调整为高度,直到结束时不可滚动。 查看下面的屏幕截图以了解更多说明 问题: 期望: 我的方法是将项目权重设置为1,因此当渲染到16次时,它们将在中共享

  • 问题内容: 我正在处理图像,但遇到宽高比问题。 如您所见,并且已经指定。我为图像添加了CSS规则: 但是,我收到和。如何设置图像以调整尺寸,同时保持其纵横比。 img { 如果对于指定区域太大,则会缩小图像(不利的一面是,不会放大图像)。

  • 我正在尝试使图片适合JLabel。我希望将图片尺寸缩小到更适合我的Swing JPanel的尺寸。 我尝试使用setPreferredSize,但它不起作用。 我在想有没有一个简单的方法来做这件事?我应该为此缩放图像吗?

  • 下面是“DisplayImage”自定义面板相关部分的代码:

  • 我是一个新的android开发和我正在尝试创建和应用程序与网格菜单,菜单。 当前依赖项:compile fileTree(目录:“libs”,include:['*.jar'])testCompile“junit:junit:4.12”编译组:“org.apache.httpcomponents”,名称:“httpclient-android”,版本:“4.3.5.1”编译组:“cz.mseber

  • 我对JPanel和JFrame还是个新手,可能没有按照我应该的方式使用它们。我正在尝试创建Pong游戏,在创建JFrame并将JPanel添加到它之后,我可以调整JPanel的大小,但我不知道如何调整JFrame的大小以适应它。Game类扩展了JPanel。 主: 编辑: 将setSize更改为setPreferredSize,然后为JFrame调用pack()就可以解决所有问题。