android - RecyclerView项目中的Android百分比屏幕宽度
问题描述
我如何让 RecyclerView 的项目高度成为屏幕高度的 30%?
我不能简单地使用 ConstraintLayout 或 PercentFrameLayout/PercentRelativeLayout,因为这些位置子布局相对于父布局,其大小可能与屏幕不匹配。
最好,我想在纯 XML 中执行此操作(并且不必使用任何 Runnables 来动态获取屏幕高度)。
编辑
澄清一下,由于很多解决方案都建议限制 RecyclerView 的高度,这不是本意。RecyclerView 仍应填充屏幕。这就是我所说的,使用屏幕宽度(而不是高度):
这个想法是让卡片的宽度为屏幕宽度的 33%,同时在水平滚动屏幕时保持 RecyclerView 的宽度不变。
解决方案
您可以覆盖LayoutManager
您RecyclerView
用来强制特定大小的方法之一:
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 的具有每个项目控制和百分比膨胀的自定义布局管理器)请参阅此答案。
推荐阅读
- python - 极小极大递归超时
- python - 我要打印的图案是颠倒的
- c# - SqlConnection 无法在 .NET Core 3.1 上打开,但在 4.6.1 框架上成功
- amazon-web-services - AWS Cognito Oauth Scope 中的标识符是什么?
- android - 如何在 Android 上打开应用程序时获取应用程序的名称?
- java - Spring Ehcache 配置:java.lang.IllegalStateException:错误
- docker - 气流泊坞窗操作员内部服务器错误(“b'Mounts denied:EOF'”)MacOS
- python - 导入 discord.py 模块的问题
- c# - 触发事件后如何让Form的大小恢复到原来的大小?
- python - 安装了 Numpy 的 pyenv python 环境上的 Numpy ModuleNotFoundError