Android 电视:VerticalGridFragment 行项目对齐

Android TV: VerticalGridFragment row items alignment

我在我的 Android 电视项目中遇到子类化 VerticalGridFragment 的问题:一切正常,但如果一行中的项目少于最大列数,那么这些项目是从中心开始水平对齐。

奇怪的是,只有当元素总数小于最大列数时才会发生这种情况。例如,假设这个数字是 6,如果我有 1 个项目,它就会放在行的中心。相反,如果我有 14 个项目,则第三行的 2 个项目从左边开始放置。

有没有办法将一行中的项目与 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>

只需尝试添加 android:orientation=垂直 在您的清单和布局文件中

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

你可以尝试将VerticalGridView的宽度设置为match_parent(见fasteque的注释)

基于@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);
}