Android TV:在ImageCardView上禁用info_field上的折叠

时间:2016-09-20 12:15:24

标签: android-tv

我第一次使用Android TV,并且我通过修改提供的示例电视应用程序来学习使用Leanback。

我遇到的问题是,当我在列表中的第一项左侧按下导航抽屉时,导航抽屉打开,焦点转到导航抽屉中的标题。发生这种情况时,ImageCardViews中的info_field视图会在图像后面折叠。

会发生什么:当我打开导航抽屉时,ImageCardView上的信息字段会隐藏。

我想要发生的事情:当我打开导航抽屉时,信息字段仍然可见。

我确定有办法实现这一点,因为我已经在某些Android TV应用中看到了它,比如Twitch。导航抽屉打开时,info_field可见的最佳方法是什么?

2 个答案:

答案 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永远不会崩溃。