在主图像上放置图像/徽章

时间:2016-07-14 16:23:02

标签: android-studio android-cardview android-tv leanback

我试图在卡片中放置标记或放置徽章,将其放在卡片中间。问题是,如果我用setMainimage放置图像,两个图像同时显示,我认为它会工作的方式是第一个显示,然后是第二个(比第一个小),但事实并非如此。我尝试的第二种方式是将它与风格放在一起但是我使用相同的风格来处理我的所有卡片,因此图像显示在我的所有卡片中。我想要一些建议或其他一些方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

有几种不同的方法可以实现这一目标。一种简单的方法是在Presenter中提供自己的XML。在您的XML中,您可以根据需要将元素叠加在一起。检查this SO post了解如何实现它。

@Override
final protected BaseCardView onCreateView(Context context) {
    final BaseCardView cardView = new BaseCardView(context, null, R.style.YourCardStyle) {
        @Override
        public void setSelected(boolean selected) {
            // TODO: Add your functionality you want here! Showing/hiding elements.
            super.setSelected(selected);
        }
    };

    cardView.addView(LayoutInflater.from(context).inflate(R.layout.card_your_custom_view, null));
    // Just some init method to set up your views visibility.
    initCardView(cardView);
    return cardView;
}

然后只要您在XML中正确命名您的视图,一切都应该按您的意愿工作。您可以将模型绑定到onBindViewHolder

中的视图
public void onBindViewHolder(CardModel cardModel, BaseCardView cardView) {
    if (cardModel == null) {
        return;
    }
    Video video = cardModel.clip;
    Context context = cardView.getContext();

    ImageView imageView = (ImageView) cardView.findViewById(R.id.main_image);
    TextView primaryText = (TextView) cardView.findViewById(R.id.primary_text);
    TextView secondaryText = (TextView) cardView.findViewById(R.id.secondary_text);
    TextView extraText = (TextView) cardView.findViewById(R.id.extra_text);
}

使用上述代码块,您必须将R.layout.card_your_custom_view替换为包含ID为Viewmain_imageprimary_text的{​​{1}}的布局文件和您自己的卡片样式的'extra_text secondary_text R.style.YourCardStyle`。 Here是您可以使用的卡片样式的一些示例。

要更好地了解. As well as replacing,请在Leanback Showcase应用中查看this folder

如果有效,请告诉我。