2015-09-04 16 views
7

Android TV用のアプリケーションを開発すると、Leanbackサポートライブラリによって提供されるBrowseFragmentの使用に問題が発生しました。 RowsFragmentの項目間のマージンを変更できますか?BrowseFragmentのアイテム間の余白を設定します

+0

要素をパッディングしていますか? – Sebastiano

+0

すばらしい返信をありがとう、私は結局解決策を見つけることができました。 – corochann

答えて

4

enter image description here

私は自分で答えを見つけました。キーは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. 

    ... 

    }; 
+0

リストの行に垂直余白を設定するにはどうすればいいですか?これで私はあなたに助けてくれるでしょう。 –

+1

'((ViewGroup.MarginLayoutParams)horizo​​ntalGridView.getLayoutParams())のようにしてください。setMargins(0、0、0、100);' horizo​​ntalGridView自体の余白を変更できます。 – corochann

+0

私はしようとします。また、行に表示されるカードに白い枠線を設定する方法を教えてください。 –

5

あなたは、たとえば、これを達成するためにいくつかのスタイルを上書きすることができます。

@dimen/margin_mediumが希望の余白の大きさである
<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> 

0

@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> 
関連する問題