如何设置单个recyclerview项目[imageview]占用屏幕的一半?

时间:2018-11-07 11:09:53

标签: android

我从single_item.xml中夸大了recyclerview项目,它只有一个imageview。如何使它占据屏幕的一半? 或以另一种方式,如何在膨胀single_item.xml文件的主xml文件中的每个屏幕上显示两个项目? 我想做到这一点而无需设置固定高度。 我尝试了布局权重划分,但是这使宿主视图无法显示两项而不是一项。

1 个答案:

答案 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;