Ich überprüfe und behebe einige Probleme bei einer Android-Anwendung, die von anderen Entwicklern entwickelt wurde.ImageButtons In GrdView Verschiedene Bildschirmgrößen
Er erstellte ein Bildschirmlayout für die normale Bildschirmgröße und legte eine GridView
darin.
Bei Codeseitenbildern definiert als integer
Array.
Integer[] a1 = { R.drawable.image1,R.drawable.image2,R.drawable.image3,R.drawable.image4, R.drawable.image5,R.drawable.image6,R.drawable.image6,R.drawable.image7,R.drawable.image8, R.drawable.image9,R.drawable.image10,R.drawable.image11
};
Integer-Array binded gridview mit diesem Code.
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageButtonAdapter(this,infox));
Also hier ise ImageButtonAdapter Klasse
public class ImageButtonAdapter extends BaseAdapter {
private Context mContext;
public ImageButtonAdapter(Context c, Integer[] imageIds) {
mContext = c;
mThumbIds = imageIds;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ImageButton imageButtonx;
if (convertView == null) {
imageButtonx = new ImageButton(mContext);
imageButtonx.setBackgroundColor(Color.TRANSPARENT);
**imageButtonx.setLayoutParams(new GridView.LayoutParams(160, 160));**
imageButtonx.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageButtonx.setPadding(5, 5, 5, 5);
/* if (position == 10)
{
imageButtonx.setVisibility(ImageButton.GONE);
}
*/
} else {
imageButtonx = (ImageButton) convertView;
}
setMyTag(imageButtonx,mThumbIds[position]);
imageButtonx.setImageResource(mThumbIds[position]);
return imageButtonx;
}
private Integer[] mThumbIds;
}
Auch res \ ziehbar-hdpi Ordner enthält hochauflösende Bilder, die 167x161 Pixel und res \ ziehbar-MDPI Ordner enthält normale Auflösung Bilder, die 82x72 Pixel ist .
Aber bei kleinen gerasterten Geräten, Bilder gestreckt. Ich denke, dass die fettgedruckte Codezeile dies verursacht; aber ich konnte es nicht reparieren.
Haben Sie Vorschläge, wie kann ich dieses Problem beheben und große normale und kleine Bildschirme unterstützen?
Warum kann man stattdessen so etwas nicht geben view.setLayoutParams (new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); – Triode
weil ich diese Option nicht mache; lass mich es versuchen :) –
danke, das hat mein Problem gelöst; aber ich konnte nicht als antwort markieren, weil du als kommentar gepostet hast. –