Android电视imageCardView背景/额外内容

时间:2014-09-19 12:53:17

标签: android television

对于Android电视应用,我使用的是v17 leanback库和Leanback主题。

在覆盖默认的imageCardView背景颜色时遇到问题。

<!-- original styles defined in Leanback theme -->

<style name="Widget.Leanback.BaseCardViewStyle" />

<style name="Widget.Leanback.ImageCardViewStyle" parent="Widget.Leanback.BaseCardViewStyle">
    <item name="cardType">infoUnder</item>
    <item name="infoVisibility">activated</item>
    <!-- i want to override this  -->
    <item name="android:background">@color/lb_basic_card_bg_color</item>
</style>

<!-- In my styles.xml I inherit leanback theme and override imageCardViewStyle -->
<style name="AppTheme" parent="Theme.Leanback">
    <item name="imageCardViewStyle">@style/myImageCardViewStyle</item>
</style>

<style name="myImageCardViewStyle">
    <item name="cardType">infoUnderWithExtra</item>
    <item name="infoVisibility">activated</item>
    <item name="extraVisibility">activated</item>
    <!-- set new color  -->
    <item name="android:background">#FADCA7</item>
</style>

问题是背景颜色总是转换为定义的&#34; lb_basic_card_bg_color&#34;在Leanback主题中,我不知道如何覆盖。

另一件事是我没有找到设置imageCardView额外卡片区域内容的方法。在API中,我只看到setTitleText和setContentText方法。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Presenter(如Leanback演示中所示),您可以尝试访问与ImageCardView一起使用的ViewHolder,并使用findViewById查找相应的视图。

试试这个:

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup) {
    mContext = viewGroup.getContext();

    final ImageCardView imageCardView = new ImageCardView(mContext);
    imageCardView.setFocusable(true);
    imageCardView.setFocusableInTouchMode(true);
    imageCardView.findViewById(R.id.info_field).setBackgroundColor(mContext.getResources().getColor(YOUR_COLOR));

    return new ViewHolder(imageCardView);
}

对于Extra,它是使用imageCardView.setBadgeImage(Drawable here);

设置的ImageView