Android TV:VerticalGridFragment行项对齐

时间:2016-07-07 06:32:00

标签: android android-layout android-tv leanback

我在我的Android TV项目中遇到了VerticalGridFragment子类的问题:一切正常,但如果在一行中有较少的项目,那么最大列数,则项目从水平对齐开始中心。

奇怪的是,只有当元素总数小于最大列数时才会发生。例如,假设此数字为6,如果我有1个项目,则将其放在行的中心。相反,如果我有14个项目,则第三行中的2个项目从左侧开始。

issue

有没有办法将行中的项目与leftstart对齐? 我做错了吗?

我已经尝试过这种方式,但没有任何反应,物品从中心开始对齐。

<style name="AppTheme.Widget.Leanback.GridItems.VerticalGridView"
       parent="Widget.Leanback.GridItems.VerticalGridView">
    <item name="android:gravity">left|start</item>
</style>

然后在我的主题中设置它,从Theme.Leanback

延伸
<item name="itemsVerticalGridStyle">@style/AppTheme.Widget.Leanback.GridItems.VerticalGridView</item>

3 个答案:

答案 0 :(得分:3)

也许VerticalGridView本身,<item>的父级,宽度较小,并且与中心对齐。

您可以尝试将VerticalGridView的宽度设置为match_parent(请参阅紧固件的评论)。

答案 1 :(得分:2)

尝试添加 机器人:取向=垂直 在您的清单和布局文件中

答案 2 :(得分:1)

基于@corochann和@fasteque答案。您可以使用此方法更快地初始化VerticalGridPresenter

public class CustomVerticalGridPresenter extends VerticalGridPresenter {

@Override
protected void initializeGridViewHolder(ViewHolder vh) {
    super.initializeGridViewHolder(vh);
    VerticalGridView gridView = vh.getGridView();

    ViewGroup.LayoutParams params = gridView.getLayoutParams();
    params.width = ViewGroup.LayoutParams.MATCH_PARENT;
    gridView.setLayoutParams(params);
}