Вопрос: Установите поля между элементами в BrowseFragment


При разработке приложения для Android TV я столкнулся с проблемой использования BrowseFragment, предоставляемой библиотекой поддержки Leanback. Можем ли мы изменить разницу между элементами RowsFragment?


8


источник


Ответы:


Вы можете переопределить некоторые стили для достижения этого, например:

<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 - размер поля, который вы хотите.


7



enter image description here

Я нашел ответ сам. Ключ был HorizontalGridView, который хранит список элементов всех строк. Мы можем получить ссылку на этот HorizontalGridView от R.id.row_content. Наконец, метод 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.

    ...

    };

6



Идеально переопределить детали стиля, как ответил @Billy. К сожалению, может потребоваться некоторое время, чтобы выяснить, что. Если то, что вы ищете, не является стильным, вы, по-видимому, можете переопределить встроенные ресурсы нехватки (не уверен, надежный / безопасный хотя). например:

<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>

1