2016-07-14 2 views
1

Я пытаюсь поместить отметку или разместить значок в своих карточках, разместив его в середине моей карты. Проблема в том, что если я поместил изображение с помощью setMainimage, оба изображения будут отображаться одновременно, то, как я думал, это сработало бы, это первый, а затем второй (который меньше первого), но это не было. Второй способ, который я попробовал, - это разместить его со стилями, но я использую тот же стиль для всех своих карт, чтобы изображение показывалось во всех моих карточках. Я хотел бы получить совет или другой способ сделать это.Размещение изображения/значка над основным изображением

+0

Трудно понять договоренность, которую вы хотите достичь. Могли бы вы издеваться над ним и показать эскиз? Вы пытаетесь показать ** наложение ** над основным изображением? –

+0

действительно, я пытаюсь выполнить LayoutInflater, но я не уверен, что это сработает. Мне просто нужно будет поставить изображение infront основного изображения cardview –

ответ

1

Есть несколько способов, которыми вы можете достичь. Простым способом было бы просто предоставить собственный 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 с файла макета, который имеет View с с идентификаторами main_image, primary_text, secondary_text и «extra_text . As well as replacing R.style.YourCardStyle` с вашим собственным стилем карты. Here - некоторые примеры стилей карт, которые вам разрешено использовать.

Чтобы получить лучшее представление об Presenters, ознакомьтесь с. this folder в приложении Leanback Showcase.

Пожалуйста, дайте мне знать, если это сработает.

+0

похоже, что вы похожи используя тип карт, которые существуют .. (underinfo, extra и т. д.), создавая новый класс с базой данных, не уверен, что это или на моей же карточке делает то, что вы мне просто скажите ... –

+0

В этом коде используется BaseCardView, которые они предоставляют. Если вы не заботитесь о каком-либо переходе, вы можете полностью построить свой собственный (и это довольно просто). Этот подход позволяет использовать некоторые из их функциональных возможностей классов, предоставляя свой собственный макет, который позволяет перекрывать представления и настраиваемые переходы на выбор. –

+0

soooo это делает совершенно новый вид карты? я понимаю, проблема в том, что я уже видел это и для того, что понимаю, вам нужно создать совершенно новую карту, расширяющую базовую карту, которую вы собираетесь использовать ..... может быть, я ошибаюсь, я не уверен .... –

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