我从single_item.xml中夸大了recyclerview项目,它只有一个imageview。如何使它占据屏幕的一半? 或以另一种方式,如何在膨胀single_item.xml文件的主xml文件中的每个屏幕上显示两个项目? 我想做到这一点而无需设置固定高度。 我尝试了布局权重划分,但是这使宿主视图无法显示两项而不是一项。
答案 0 :(得分:1)
执行此操作的最佳方法是将代码添加到onCreateViewHolder()
中,以更改项目视图的高度(如果使用垂直布局管理器)或宽度(如果使用水平布局管理器)。
下面是一个示例,说明如何使每个项目变成屏幕大小的一半:
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View itemView = inflater.inflate(R.layout.itemview, parent, false);
// here we override the inflated view's height to be half the recyclerview size
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) itemView.getLayoutParams();
layoutParams.height = (parent.getHeight() / 2) - layoutParams.topMargin - layoutParams.bottomMargin;
itemView.setLayoutParams(layoutParams);
return new MyViewHolder(itemView);
}
如果您的项目视图布局没有任何边距,则可以省略边距的减法而仅使用
layoutParams.height = parent.getHeight() / 2;
如果您尝试使用水平布局管理器,则可以更改宽度而不是高度:
layoutParams.width = (parent.getWidth() / 2) - layoutParams.leftMargin - layoutParams.rightMargin;