Leanback VerticalGridFragment删除顶部间距

nad*_*e87 10 android android-layout leanback

我使用VerticalGridFragment以类似网格的布局显示项目我不需要显示搜索或标题,我希望行从屏幕顶部开始,没有任何边距.有帮助吗?示例如下图所示

nad*_*e87 12

我找到了一种方法,通过覆盖VerticalGridFragmentVerticalGridPresenter然后获取VerticalGridView,并将顶部填充设置为较小的值.在CustomVerticalGridPresenter类(扩展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);
}
Run Code Online (Sandbox Code Playgroud)

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

 CustomVerticalGridPresenter gridPresenter = new CustomVerticalGridPresenter();
    gridPresenter.setNumberOfColumns(NUM_COLUMNS);
    setGridPresenter(gridPresenter);
Run Code Online (Sandbox Code Playgroud)


小智 7

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

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在verticalgridfragment类中使用

CustomVerticalGridPresenter videoGridPresenter = new 
CustomVerticalGridPresenter(ZOOM_FACTOR, false);
Run Code Online (Sandbox Code Playgroud)

代替

VerticalGridPresentervideoGridPresenter = new VerticalGridPresenter(ZOOM_FACTOR, false);
Run Code Online (Sandbox Code Playgroud)