Leanback VerticalGridFragment 移除顶部间距

Leanback VerticalGridFragment remove top spacing

我正在使用 VerticalGridFragment 在 grid-like 布局中显示项目 我不需要显示搜索或标题,我希望行从屏幕顶部开始,没有任何边距。有帮助吗?

First of follow this steps to move the rows up which is by default given margins by Lean back Library.

1. Go to you SDK.

2. Inside SDK -> extras -> android -> support -> v17 -> leanback -> res -> values.

3. Inside values folder copy the dimens.xml inside your current project and copy to your projects res -> values folder.

Now you have the file name dimens.xml inside your values folder.

Now open the dimens.xml file which you have copied.

Change the value for property defined below. By default it will given 168dp around that. So make it less to decrease the top margin as i have given below.

<dimen name="lb_browse_rows_margin_top">35dp</dimen>

现在您可以将行拆分到 Browse Fragment.

顶部的正下方

我找到了一种方法,通过覆盖 VerticalGridFragmentVerticalGridPresenter 然后获取 VerticalGridView,并将顶部填充设置为较小的值。 在 CustomVerticalGridPresenter class(扩展 VerticalGridPresenter)中,覆盖此方法:

@Override
protected void initializeGridViewHolder(ViewHolder vh) {
    super.initializeGridViewHolder(vh);
    gridView = vh.getGridView();
    int top= 20;//this is the new value for top padding
    int bottom = gridView.getPaddingBottom();
    int right = gridView.getPaddingRight();
    int left = gridView.getPaddingLeft();
    gridView.setPadding(left,top,right,bottom);
}

然后在 VerticalGridFragment 中,分配新的 CustomVerticalGridPresenter 如下:

 CustomVerticalGridPresenter gridPresenter = new CustomVerticalGridPresenter();
    gridPresenter.setNumberOfColumns(NUM_COLUMNS);
    setGridPresenter(gridPresenter);

您需要创建名为 CustomVerticalGridPresenter 的新 class 并将以下代码放入其中.

public class CustomVerticalGridPresenter extends VerticalGridPresenter {

    VerticalGridView gridView;

    CustomVerticalGridPresenter(int zoom, boolean val){
        super(zoom, val);
    }

    @Override
    protected void initializeGridViewHolder(ViewHolder vh) {
        super.initializeGridViewHolder(vh);
        gridView = vh.getGridView();
        int top = 20;//this is the new value for top padding
        int bottom = gridView.getPaddingBottom();
        int right = gridView.getPaddingRight();
        int left = gridView.getPaddingLeft();
        gridView.setPadding(left,top,right,bottom);
    }
}

然后在verticalgridfragmentclass中使用

CustomVerticalGridPresenter videoGridPresenter = new 
CustomVerticalGridPresenter(ZOOM_FACTOR, false);

而不是

VerticalGridPresentervideoGridPresenter = new VerticalGridPresenter(ZOOM_FACTOR, false);

解决此问题的另一种方法是设置 VerticalGridView 的 windowAlignment 属性。最值得注意的是......

verticalGridView.windowAlignment = BaseGridView.WINDOW_ALIGN_LOW_EDGE //this will remove the top margin
verticalGridView.windowAlignmentOffset = 0
verticalGridView.windowAlignmentOffsetPercent = 25f //find correct values for your case