【发布时间】:2016-06-24 23:51:07
【问题描述】:
我一直在开发一个 android 电视应用程序。我在 BrowserFragment 类中填充了电影列表。我有一个使用 ImageCardView 显示电影缩略图的演示者类。我正在尝试在 Selected 上自定义 imagecardview。我希望它看起来像这里的图片。在选择特定的 ImageCardView 时,缩略图的大小会增加,但基本对齐方式应该与 pic 中所示的其他未选中的相同。
编辑图片链接https://www.dropbox.com/s/habpjnrlwh1se8v/sample.png?dl=0
编辑演示者类
public class CardPresenter extends Presenter {
private int mSelectedBackgroundColor = -1;
private int mDefaultBackgroundColor = -1;
private Drawable mDefaultCardImage;
class ViewHolder extends Presenter.ViewHolder {
HashMap<Integer,Object> ObjectsList=new HashMap<>();
public ViewHolder(View view) {
super(view);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent) {
mDefaultBackgroundColor = R.color.default_background;
mSelectedBackgroundColor = R.color.selected_background;
mDefaultCardImage = parent.getResources().getDrawable(R.drawable.lb_card_shadow_focused, null);
ImageCardView cardView = new ImageCardView(parent.getContext()) {
@Override
public void setSelected(boolean selected) {
updateCardBackgroundColor(this, selected);
super.setSelected(selected);
}
};
cardView.setFocusable(true);
cardView.setFocusableInTouchMode(true);
updateCardBackgroundColor(cardView, false);
return new ViewHolder(cardView);
}
private void updateCardBackgroundColor(ImageCardView view, boolean selected) {
int color = selected ? mSelectedBackgroundColor : mDefaultBackgroundColor;
// Both background colors should be set because the view's
// background is temporarily visible during animations.
view.setBackgroundColor(color);
view.findViewById(R.id.info_field).setBackgroundColor(color);
}
@Override
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
Movie movie = (Movie) item;
ImageCardView cardView = (ImageCardView) viewHolder.view;
cardView.setTitleText(movie.getName());
cardView.setContentText(movie.getCategory());
if (movie.getImgResUrl() != 0) {
// Set card size from dimension resources.
Resources res = cardView.getResources();
// int width = res.getDimensionPixelSize(R.dimen.card_width);
// int height = res.getDimensionPixelSize(R.dimen.card_height);
cardView.setMainImageDimensions(300, 300);
Glide.with(cardView.getContext())
.load(movie.getImgResUrl())
.error(mDefaultCardImage)
.into(cardView.getMainImageView());
}
}
@Override
public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) {
ImageCardView cardView = (ImageCardView) viewHolder.view;
// Remove references to images so that the garbage collector can free up memory.
cardView.setBadgeImage(null);
cardView.setMainImage(null);
}
}
任何帮助将不胜感激。谢谢
【问题讨论】:
-
请添加参考图像或添加具有图像卡视图的演示者类代码。
-
@jaydroider 我没有足够的声誉来发布图片,所以我添加了指向示例图片的链接
-
请发布您的演示者课程代码。
-
目前使用此代码,您的列表行布局看起来如何。你能解释一下吗?
-
是的,我有一排电影缩略图,我可以垂直向下滚动。每一行都有不同的类别,如喜剧、动作冒险。添加这些类别只是为了名字。
标签: android television android-tv presenter