Удалить верхнее поле из BrowseFragment в Android TV

Как я могу удалить пустое пространство, как показано в пунктирной рамке на изображении ниже из BrowseFragment, Мне удалось удалить кнопку поиска и заголовок. Хотя я также хочу удалить пустое пространство и переместить строку видео вверху экрана.

Есть какой-либо способ сделать это?

Я попытался установить следующий в моей AppTheme, но я сомневаюсь, что это помогает:

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

2 ответа

Решение

Вы можете сделать это, используя это dimens.xml который предусмотрен в v17 Lean Back библиотека.

Follow the steps below first.

  1. Перейти к вашей sdk -> extras -> android -> support -> v17 -> leanback -> res -> values,

  2. Из их копии dimens.xml файл в текущий проект values папка.

  3. Теперь у вас есть dimens.xml файл внутри вашего проекта values папка.

  4. Откройте этот файл и найдите ниже dimen,

Значение по умолчанию может быть 167dp дано.

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

Так что поменяй 30dp или согласно вашей потребности.

<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 метод.

Другие вопросы по тегам