Сосредоточьтесь на первом элементе списка и прокрутите список
Я разрабатываю приложение для 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);
2 ответа
Вы можете легко сделать это, используя HorizontalGridView из Leanback и установив эти параметры, чтобы заставить фокус в левой части экрана.
windowAlignment = BaseGridView.WINDOW_ALIGN_BOTH_EDGE
windowAlignmentOffset = 0f
windowAlignmentOffsetPercent = 0f
itemAlignmentOffsetPercent = 0f
В Presenter вашей строки вы можете получить ссылку на HorizontalGridView строки, а затем использовать 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);
}