在Android TV上,如何使RecyclerView的项目获得焦点?

5

我正在开发一个基于Android TV的应用程序,其中涉及到一个recycler view。如何将焦点设置在想要的位置?(我已经尝试过 scrollToPositionsmoothScroller,但它们不起作用)。提前感谢您的帮助!

1个回答

6
你需要在项目视图上调用 setFocusable(true)setFocusableInTouchMode(true) 方法。
举个例子:
@NonNull
@Override
public ProgrammeAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_item_programme, parent, false);
    view.setFocusable(true);
    view.setFocusableInTouchMode(true);

    sDefaultBackgroundColor = ContextCompat.getColor(parent.getContext(), android.R.color.transparent);
    sSelectedBackgroundColor = Color.parseColor("#66ffe680");

    updateEPGTitleRowBackgroundColor(view, false);

    view.setOnFocusChangeListener(mOnFocusChangeListener);
    view.setOnKeyListener(mOnKeyListener);

    return new ViewHolder(view);
}

编辑:

您可以尝试调用

mRecyclerView.getChildAt(0).requestFocus();

聚焦特定项的方法。只需将0替换为您想要的项的索引。


谢谢你的回答。我已经让电视获得了焦点,而且项目也是可聚焦的。问题在于我想在片段启动时设置焦点在某个特定位置。 - Laura
这个答案对我有用,谢谢你。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接