我第一次使用Android TV,并且我通过修改提供的示例电视应用程序来学习使用Leanback。
我遇到的问题是,当我在列表中的第一项左侧按下导航抽屉时,导航抽屉打开,焦点转到导航抽屉中的标题。发生这种情况时,ImageCardViews中的info_field视图会在图像后面折叠。
会发生什么:当我打开导航抽屉时,ImageCardView上的信息字段会隐藏。
我想要发生的事情:当我打开导航抽屉时,信息字段仍然可见。
我确定有办法实现这一点,因为我已经在某些Android TV应用中看到了它,比如Twitch。导航抽屉打开时,info_field可见的最佳方法是什么?
答案 0 :(得分:0)
我想如果你看this SO post,那么你会在那里得到大部分。信息视图由于leanback调用"扩展"。
而隐藏尝试在enableMainFragmentScaling(false);
中调用BrowseFragment
,看看是否符合您的要求。如果它不是您想要的,请参阅我链接的帖子。
此外,如果您在链接的SO帖子中尝试过我推荐的内容,您也可以在BaseCardView
setInfoVisibility()
上调用API并将其传递给CARD_REGION_VISIBLE_ALWAYS
。这只需要调用您的卡片的引用,该卡片不需要覆盖演示者或卡片。
答案 1 :(得分:0)
我已经知道如何做到这一点。在CardPresenter中,在onCreateViewHolder中,当创建ImageCardView时我已经重写了BaseCardView方法,setActivated(boolean activated)总是将'true'传递给它的super。然后调用setActivated以便从头开始激活它。像这样:
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent) {
ImageCardView cardView = new ImageCardView(parent.getContext()) {
@Override
public void setActivated(boolean activated) {
super.setActivated(true);
}
@Override
public void setSelected(boolean selected) {
updateCardBackgroundColor(this, selected);
super.setSelected(selected);
}
};
cardView.setActivated(true);
cardView.setFocusable(true);
cardView.setFocusableInTouchMode(true);
return new ViewHolder(cardView)
}
所以这对我有用。 ImageCardView永远不会崩溃。