我一直在开发一个 android 电视应用程序。我有我在课堂上填充的电影列表。我BrowserFragment
有一个演示者类ImageCardView
用来显示电影缩略图。我正在尝试自定义 Selected 上的 imagecardview。我想要它看起来像这里的图片。在选择特定ImageCardView
缩略图时,缩略图的大小会增加,但基本对齐方式应与其他未选择的对齐方式相同,如图所示。
编辑图片链接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);
}
}
任何帮助将不胜感激。谢谢