在BrowseFragment上设置项目之间的边距

开发Android TV应用程序,我面临Leanback支持库提供的BrowseFragment的使用问题。 我们可以更改RowsFragment项目之间的边距吗?

您可以重写一些样式来实现这一点,例如:

<style name="AppTheme.Leanback" parent="Theme.Leanback"> .. <item name="rowHorizontalGridStyle">@style/TvHorizontalGridView</item> .. </style> <style name="TvHorizontalGridView" parent="Widget.Leanback.Row.HorizontalGridView"> <item name="horizontalMargin">@dimen/margin_medium</item> <item name="verticalMargin">@dimen/margin_medium</item> </style> 

其中@dimen/margin_medium是所需边距的大小。

在这里输入图像说明

我自己find了答案。 关键是Horizo​​ntalGridView存储每个行项目列表。 我们可以通过R.id.row_content得到这个Horizo​​ntalGridView的引用。 最后,setItemMargin方法是解决这个问题的方法。 下面是一个示例代码,我可以得到顶部的图像。

 @Override public ViewHolder onCreateViewHolder(ViewGroup parent) { HorizontalGridView horizontalGridView = (HorizontalGridView) parent.findViewById(R.id.row_content); horizontalGridView.setItemMargin(400); // You can set item margin here. ... }; 

理想情况下,覆盖@Billy回答的样式细节。 不幸的是花了一段时间才能弄清楚什么是什么。 如果你正在寻找的是不可风格的,你可以显然覆盖内置的leanback资源(不确定如果可靠/安全的话)。 例如:

 <dimen name="lb_browse_rows_margin_top">167dp</dimen> <dimen name="lb_browse_item_vertical_spacing">8dp</dimen> <dimen name="lb_browse_expanded_row_no_hovercard_bottom_padding">28dp</dimen>