/ / Gridview não mostra toda a imagem, apenas uma pequena parte - android, imagem, gridview, imageview, adaptador

Gridview não mostra toda a imagem, apenas uma pequena parte - android, imagem, gridview, imageview, adaptador

Eu tenho o seguinte GridView:

public View getView(int position, View convertView, ViewGroup parent) {

ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setScaleType(ScaleType.CENTER_CROP);
} else {
imageView = (ImageView) convertView;
}
if (mTemplates.get(position).getResource() != 0) {
LogService.log("", "zzzzzzzzzzzzzzzz======loaded from resource" + mTemplates.get(position).getResource() + "???????????" + mTemplates.size());
imageView.setImageResource(mTemplates.get(position).getResource());
} else {
imageView.setImageDrawable(mTemplates.get(position).getDrawableThumbnail());
// imageView.setImageResource(mTemplates.get(0).getResource());
LogService.log("", "zzzzzzzzzzzzzzzz======loaded from drawable");
LogService.log("", "=========SIZE: " + mTemplates.size());
}
return imageView;
}

Agora eu tenho alguns elementos que não têmrecursos nos Drawables, mas em vez de em uma pasta no sdcard, então crio um drawable a partir da origem dessas imagens e tento carregar esse drawable no gridview:

imageView.setImageDrawable(mTemplates.get(position).getDrawableThumbnail());

Mas é como se o gridview não reconhecesseestas, e se estiver na mesma coluna com outras imagens, é mostrado, mas se estiver em outra coluna (inferior), mostrará apenas 2-3 mm da imagem (também não reconhece sua posição como se não existisse). Se eu codificar e usar a primeira imagem de Recursos como esta:

imageView.setImageResource(mTemplates.get(0).getResource());

Tudo funciona, qual pode ser o problema?

Respostas:

0 para resposta № 1

Porque o tamanho real da imagem é o tamanho pequeno, mas ao carregar um imageView de Recursos, ele o estica para o tamanho original.

Resolvido este problema calculando a altura necessária e, em seguida, carregue todas as imagens com essa altura:

 public AdapterGridView(Context c) {
context = c;
DisplayMetrics metrics = new DisplayMetrics();
((Activity) c).getWindowManager().getDefaultDisplay().getMetrics(metrics);
if (Constants.IS_TABLET) {
height = metrics.widthPixels / 9 - (int) Util.pxFromDp(2, c);
} else {
height = metrics.widthPixels / 4 - (int) Util.pxFromDp(2, c);
}
}

public View getView(int position, View convertView, ViewGroup parent) {

ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
} else {
imageView = (ImageView) convertView;
}
imageView.setScaleType(ScaleType.CENTER_CROP);
imageView.setAdjustViewBounds(true);
if (mTemplates.get(position).getResource() != 0) {
imageView.setImageResource(mTemplates.get(position).getResource());
} else {
imageView.setImageDrawable(mTemplates.get(position).getDrawableThumbnail());
}
imageView.setLayoutParams(new LayoutParams(height, height));
return imageView;
}