Удалить верхнее поле из 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.
Перейти к вашей
sdk
->extras
->android
->support
->v17
->leanback
->res
->values
,Из их копии
dimens.xml
файл в текущий проектvalues
папка.Теперь у вас есть
dimens.xml
файл внутри вашего проектаvalues
папка.Откройте этот файл и найдите ниже
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
метод.