Gridview: altezza celle adattabile allo schermo

marcellino247

Nuovo Utente
4 Mag 2015
10
0
1
Salve a tutti, un quesito semplice (se si conosce la risposta ).
Io ho una gridview di immagini alla quale ho impostato nell'XML il numero di colonne.
qui il codice XML:

Codice:
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/grid_view_bambini14"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:numColumns="@integer/grid_columns" <!-- il valore di grid_colums è deciso in res/values a seconda se l'orientamento del dispositivo è landscape o portrait -->
        android:horizontalSpacing="10sp"
        android:verticalSpacing="10sp"
        android:gravity="center"
        android:stretchMode="columnWidth" >
e questo è il codice java che popola le celle:

Codice:
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(mContext);
            imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            imageView.setLayoutParams(new GridView.LayoutParams(GridView.AUTO_FIT , 260));
        } else {
            imageView = (ImageView) convertView;
        }
        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }
Ora, il problema è che l'altezza delle celle. Le immagini sono sempre alte uguali, ma le celle che le contengono a seconda del dispositivo (presumo in base a risoluzione e densità) a volte vanno bene e altre diventano altissime.
credo che il parametro sotto accusa sia in questa linea:

Codice:
     imageView.setLayoutParams(new GridView.LayoutParams(GridView.AUTO_FIT , 260));
ma ho fatto già diversi esperimenti e non viene mai bene. Anche mettere GridView.AUTO_FIT anche nell'altezza si risolve in una schifezza.
C'è un modo in cui si può risolvere questo problema?

Grazie!...
 

marcellino247

Nuovo Utente
4 Mag 2015
10
0
1
Ciao,
ti consiglio di dare un occhio a questo tutorial:
http://www.jayway.com/2012/10/04/how-to-make-the-height-of-a-gridview-wrap-its-content/
Prova a postare l'intero xml dell'interfaccia.
Ho dato un'occhiata ma non mi sembra quello che cercavo...

Comunque ho più o meno risolto, cambiando questa riga di codice:

Codice:
imageView.setLayoutParams(new GridView.LayoutParams(GridView.AUTO_FIT , (int) mContext.getResources().getDimension(R.dimen.grid_view_item_height)));
e inserendo nei diversi res/values misure diverse in dp invece che in px.

Codice:
<dimen name="grid_view_item_height">100dp</dimen>
 
Ultima modifica: