从 Android TV 中的 BrowseFragment 移除上边距

Remove top margin from BrowseFragment in Android TV

如何删除空白 space,如下图 BrowseFragment 中的虚线框所示。我设法删除了搜索按钮和标题。虽然,我也想删除空白 space 并在屏幕顶​​部移动视频行。

有什么办法吗?

我尝试在我的 AppTheme 中设置以下内容,但我怀疑它是否有用:

    <item name="browseRowsMarginTop">0dp</item>
    <item name="browsePaddingTop">0dp</item>

您可以使用 v17 Lean Back 库中提供的 dimens.xml 来做到这一点。

Follow the steps below first.

  1. 转到您的 sdk -> extras -> android -> support -> v17 -> leanback -> res -> values.

  2. 从他们的副本 dimens.xml 文件到您当前的 Leanback 项目 values 文件夹。

  3. 现在您的项目 values 文件夹中有了 dimens.xml 文件。

  4. 打开该文件并在下面找到 dimen

Default value may be 167dp given.

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

So change it to around 30dp or as per your need.

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

您将获得 Browse Fragment 中的行数。

如果您只需要删除片段中的页眉边距而不是全局覆盖 BrowseFragment:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = super.onCreateView(inflater, container, savedInstanceState);
    FrameLayout containerDock = (FrameLayout) view.findViewById(R.id.browse_container_dock);
    FrameLayout.MarginLayoutParams params = (FrameLayout.MarginLayoutParams) containerDock.getLayoutParams();
    Resources resources = inflater.getContext().getResources();
    int newHeaderMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 30, resources.getDisplayMetrics());
    int offsetToZero = -resources.getDimensionPixelSize(R.dimen.lb_browse_rows_margin_top);
    params.topMargin = offsetToZero+newHeaderMargin;
    containerDock.setLayoutParams(params);
    return view;
}

IanZ 解决方案完美运行。获取主容器的其他方法是 FrameLayout containerDock = getView().findViewById(R.id.browse_container_dock); 在主片段中没有覆盖 oncreateView 方法。