Gridview: altezza celle adattabile allo schermo

  • Risposte:1
marcello
  • Post del forum: 16

21 mag 2015, 16:23:06 Tramite pagina web

Salve a tutti, un quesito semplice (se si conosce la risposta :D).
Io ho una gridview di immagini alla quale ho impostato nell'XML il numero di colonne.
qui il codice XML:

    <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:

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:

 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!...

Rispondere
Iv_Ma
  • Post del forum: 3

13 dic 2015, 11:14:29 Tramite pagina web

Io nelle mie app ho risolto vedendo la risoluzione del dispositivo e adattando per esempio GridView o Bottoni in base alla risoluzione dello schermo.

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int larghezza = size.x;
    int altezza = size.y;ù

Spero ti possa servire.
Iv_Ma

Rispondere