Размещение изображения / значка над основным изображением
Я пытаюсь поставить отметку или разместить значок в своих карточках, поместив его посередине карточки. Проблема в том, что, если я размещу изображение с помощью setMainimage, которое показывают оба изображения одновременно, я думал, что это сработало бы, если сначала показать одно, а затем второе (которое меньше первого), но это был не тот случай. Второй способ, которым я попытался, это поместить его в стили, но я использую один и тот же стиль для всех моих карт, поэтому изображение отображается во всех моих картах. Я хотел бы получить совет или другой способ сделать это.
1 ответ
Есть несколько способов, которыми вы можете достичь этого. Простым способом было бы просто предоставить свой собственный XML в Presenter. В своем XML вы можете накладывать свои элементы друг на друга так, как вам нравится. Посмотрите этот пост, чтобы узнать, как этого добиться.
@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
с вашим файлом макета, который имеет View
с идентификаторами main_image
, primary_text
, secondary_text
и 'extra_text. As well as replacing
R.style.YourCardStyle` со своим собственным стилем карты. Вот несколько примеров стилей карт, которые вы можете использовать.
Чтобы лучше понять Presenters
, проверьте эту папку в приложении Leanback Showcase.
Пожалуйста, дайте мне знать, если это работает.