2

我正在开发一个 Android TV 应用程序并显示列表中的项目。当我滚动列表焦点从当前项目移动到下一个项目时,我希望将焦点始终保持在第一个项目上并从相同的选定项目位置滚动整个列表。比如,这个 Hotstar 的实现。目前,我正在使用带有以下代码的 Android ListRow。

AssetCardPresenter assetCardPresenter = new AssetCardPresenter(getActivity());
            MdsCompletedRecordingAdapter cardRowAdapter = new MdsCompletedRecordingAdapter(getActivity(), assetCardPresenter, 10);
            Map<String, MdsCompletedRecord> completedRecordingMap = getMdsCompletedRecordingProgramsMap(completedRecordedProgramList);
            HeaderItem headerItem = new HeaderItem(SCHEDULED_PROGRAM_HEADER_ID, COMPLETED_HEADER_NAME);
            ArrayList<MdsCompletedRecord> arrayList = new ArrayList<>(completedRecordingMap.values());
            Collections.reverse(arrayList);
            cardRowAdapter.addAllItems(arrayList);
            ListRow row = new ListRow(headerItem, cardRowAdapter);
            mRowAdapter.add(row);
4

2 回答 2

0

在行的 Presenter 中,您可以获得对行的 Horizo​​ntalGridView 的引用,然后使用 setWindowAlignmentOffsetPercent:

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent) {
    
    horizontalGridView = (HorizontalGridView) parent.findViewById(R.id.row_content);
    int offset = 10;
    horizontalGridView.setWindowAlignmentOffsetPercent(offset);
    

    MyImageCardView cardView = new MyImageCardView(mContext);

    return new ViewHolder(cardView);
}
于 2021-12-13T16:56:27.573 回答
0

您可以使用 Leanback 中的 Horizo​​ntalGridView 轻松完成此操作并设置这些参数以强制将焦点放在屏幕左侧

    windowAlignment = BaseGridView.WINDOW_ALIGN_BOTH_EDGE
    windowAlignmentOffset = 0f
    windowAlignmentOffsetPercent = 0f
    itemAlignmentOffsetPercent = 0f
于 2020-09-15T14:56:13.043 回答