Ho creato a livello di programmazione un GridView di immagini da utilizzare all'interno di una finestra di dialogo. Se imposto le colonne su autofit, ottengo sempre esattamente due colonne, qualunque sia la dimensione delle immagini e qualunque sia la dimensione dello schermo. Se imposto le colonne su un numero fisso, allora funziona, ma non posso evitare che le immagini si sovrappongano a certe dimensioni dello schermo, quindi una gestione automatica del numero di colonne sarebbe molto meglio. Ancora di più, quando provo a impostare lo streching, semplicemente non mostra nulla!GridView mostra solo due colonne
mio ImageAdapter:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// Constructor
public ImageAdapter(Context c){
mContext = c;
}
public int getCount() {
return (IconC.Res.length);
}
public Object getItem(int position) {
return (IconC.Res[position]);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(IconC.Res[position]);
return (imageView);
}
}
E la funzione che crea la finestra di dialogo (che si chiama altrove con un .Show())
private void createPopUp() {
d_icons = new Dialog(this);
GridView gv_icons = new GridView(this);
// gv_icons.setNumColumns(GridView.AUTO_FIT); // autofit disabled, shows ONLY TWO COLUMNS
gv_icons.setNumColumns(4); // instead, autofit forced, now it works, but I don't want it fixed!
gv_icons.setGravity(Gravity.CENTER);
gv_icons.setHorizontalSpacing(3);
gv_icons.setVerticalSpacing(1);
// gv_icons.setStretchMode(GridView.STRETCH_SPACING); // stretching disabled, shows ZERO COLUMNS
gv_icons.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
gv_icons.setAdapter(new ImageAdapter(this));
gv_icons.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
eventIcons.set(selectedItem, position);
updateEventView();
d_icons.dismiss();
}
});
d_icons.setTitle(R.string.text_chooseicon);
d_icons.addContentView(gv_icons, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
d_icons.setCancelable(true);
}
chiunque può individuare il motivo per cui questo accade? Grazie!!
Ecco come appare con le 4 colonne fisse: i50.tinypic.com/2ebdfec.png
Ecco come è con l'adattamento automatico: i50.tinypic.com/25jxo9s.png
Ecco il layout con autofit su una scheda orizzontale: i49.tinypic.com/23r7qj5.png
Questo è esattamente il mio problema: 4 colonne restano molto bene sullo schermo di test, due creano molto spazio vuoto tra le immagini. Quindi sembra che l'autofit non funzioni. Ecco come appare con le 4 colonne fisse: http://i50.tinypic.com/2ebdfec.png Ecco come funziona con l'autofit: http://i50.tinypic.com/25jxo9s.png –
autofit dovrebbe funzionare bene perché se non aggiusti la colonna, sembrerà molto imbarazzante nelle schede. Quindi vai con autofit. prova a ridimensionare le tue immagini. ti aiuterà. – Rohit
Il mio problema è esattamente quello che mi suggerisci: io * voglio * usare autofix, ma sebbene le immagini siano già piccole (già ridimensionate) non funziona. Ci deve essere qualche difetto nel codice. –