2014-09-19 3 views
1

Для Android Tv app Я использую библиотеку v17 leanback и тему Leanback.Android Tv imageCardView background/extra content

Проблемы с переопределением изображения по умолчанию 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> 

Проблема заключается в том, что цвет фона всегда переходили к определенной «lb_basic_card_bg_color» в теме Leanback, что я не знаю, как переопределить.

Другое дело, что я не нашел способ настройки содержимого области дополнительной карты imageCardView. В API я вижу только методы setTitleText и setContentText.

+0

как использовать @color? –

+0

Используйте Hexa Code ​​# FF6600

+0

оранжевый цвет определен в моих цветах.xml – netpork

ответ

2

Если вы используете презентатор (как в демонстрационной версии Leanback), вы можете попытаться получить доступ к ViewHolder, используемому с ImageCardView, и найти соответствующий View с 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, это ImageView, что вы установили с imageCardView.setBadgeImage(Drawable here);

Смежные вопросы