我发现一种方法可以通过覆盖 VerticalGridFragment 的 VerticalGridPresenter 并获取 VerticalGridView,然后将顶部填充设置为较小的值来实现。
在扩展了 VerticalGridPresenter 的 CustomVerticalGridPresenter 类中,覆盖此方法:
@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的新类,并将以下代码放入其中.
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);
}
}
然后在VerticalGridFragment类中使用:
CustomVerticalGridPresenter videoGridPresenter = new
CustomVerticalGridPresenter(ZOOM_FACTOR, false);
VerticalGridPresentervideoGridPresenter = new VerticalGridPresenter(ZOOM_FACTOR, false);
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
首先按照以下步骤将默认给定的边距上移,这是Lean back Library的功能。
1. 进入您的SDK。
2. 在SDK内 -> extras -> android -> support -> v17 -> leanback -> res -> values。
3. 在values文件夹中复制dimens.xml到当前项目中,然后将其复制到项目的res -> values文件夹中。
现在您的values文件夹中有dimens.xml文件。
现在打开您已复制的dimens.xml文件。
更改下面所定义属性的值。默认情况下,它会给出大约168dp,因此将其减小以减少顶部边距,如下所示。
<dimen name="lb_browse_rows_margin_top">35dp</dimen>
dimen
文件只是使用leanback提供的所有布局的dp值。我也有同样的问题,即从顶部显示行,我通过仅更改dimen文件中的dp值来解决了这个问题,没有做其他修改。 - Jay Rathod<style name="AppTheme.Leanback.NoTitle" parent="Theme.Leanback.Browse">
<item name="browseRowsMarginTop">@dimen/lb_browse_rows_margin_top_none</item>>
</style>
在dimens.xml文件中
<dimen name="lb_browse_rows_margin_top_none">32dp</dimen>