【发布时间】:2017-04-27 18:02:36
【问题描述】:
我目前正在开发一款 Android TV 应用。我觉得这很有挑战性,因为您不能只绘制一个列表并让用户通过触摸进行导航。当用户点击 Dpad 按钮时,您必须以编程方式滚动列表。
我想创建一个类似于 Android TV 设置屏幕中的菜单的列表。请看视频example。
到目前为止,我使用的解决方案是创建水平的RecyclerView,当用户向右或向左点击 dpad 时更新。
所以在我的adapter 我有一个方法:
public void incrementPosition() {
if(currentSelection < getItemCount()) {
previousSelection = currentSelection;
notifyItemChanged(previousSelection);
currentSelection++;
notifyItemChanged(currentSelection);
}
}
然后当onBindViewHolder 被调用时,我有类似的东西:
if(position == currentSelection) {
//draw item to look like it's selected
}
else if(position == previousSelection) {
// draw item to look it's NOT selected
}
这将使项目看起来被选中,但列表不会随着新选择一起滚动。
recentlyAddedRecyclerView.smoothScrollToPosition(currentSelection + 2)
(是的,我知道currentSelection + 2 可以超出列表,我有一些 if 语句)
结果与上面发布的视频类似。但是,它并不像我希望的那样“活泼”。我只是想确保这是实现它的最佳方式。
这是来自网络调用的动态列表。所以我不能只用静态视图制作布局。
【问题讨论】:
-
是的,我目前正在尝试leanback 方法。这些示例应用程序非常棒,除非您尝试制作一个具有非常特定用户界面的应用程序。例如,我使用 VerticalGridFragment 在屏幕上绘制可选择的图像。现在如何添加分页?当我开始时甚至没有为布局充气时,如何将下拉菜单添加到布局的顶部?当(再次)没有布局时,如何将图像添加到我的侧边栏?
-
我认为,如果您正在使用分页和下拉菜单,那么您做错了什么,或者至少不适合 Leanback 体验 - 并且有些东西不容易用 d-pad 导航。需要查看的两个资源:图书馆上的 Google IO 视频:youtu.be/QFHIfQy8_Wc 和 Udacity Android TV 课程:udacity.com/course/…
-
感谢您的链接。我看了Youtube视频。事情似乎仍然非常有限。您可以使用样式进行自定义,但我没有看到有关如何将其他 ui 元素添加到您的卡片页面的任何内容。我必须在页面顶部添加一个 ViewPager。顺便说一句,下拉菜单用于选择您正在观看的节目的季节和排序过滤器。我认为没有办法解决这个问题。
标签: android android-tv television