1

カードビューにマークまたはバッジを配置して、カードの中央に配置しようとしています。問題は、両方の画像が同時に表示される setMainimage を使用して画像を配置すると、最初の画像が表示され、次に 2 番目の画像 (最初の画像よりも小さい) が表示されるということでした。そうではありませんでした。私が試した2番目の方法は、スタイルを使用して配置することでしたが、すべてのカードに同じスタイルを使用しているため、すべてのカードに画像が表示されています. アドバイスや他の方法を教えていただきたいです。

4

1 に答える 1

1

これを実現するには、いくつかの方法があります。簡単な方法は、Presenter で独自の XML を提供することです。XML では、必要に応じて要素を互いに重ねることができます。それを達成する方法については、このSO投稿を確認してください。

@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);
}

上記のコード ブロックでは、ID の s 、、および 'extra_text R.style.YourCardStyle` を独自のカード スタイルR.layout.card_your_custom_viewに持つレイアウト ファイルに置き換える必要があります。使用できるカード スタイルの例を次に示します。Viewmain_imageprimary_textsecondary_text. As well as replacing

の理解を深めるには、Leanback Showcase アプリでこのフォルダーPresentersを確認してください。

これがうまくいくかどうか教えてください。

于 2016-07-19T15:56:24.503 に答える