Gridview: altezza celle adattabile allo schermo

Discussione in 'Sviluppo app per Android' iniziata da marcellino247, 21 Maggio 2015.

  1. marcellino247

    marcellino247 Nuovo Utente

    Registrato:
    4 Maggio 2015
    Messaggi:
    10
    Mi Piace Ricevuti:
    0
    Punteggio:
    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!...
     
  2. michelep

    michelep Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    123
    Mi Piace Ricevuti:
    4
    Punteggio:
    0
    Home Page:
  3. marcellino247

    marcellino247 Nuovo Utente

    Registrato:
    4 Maggio 2015
    Messaggi:
    10
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    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: 28 Maggio 2015
  4. michelep

    michelep Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    123
    Mi Piace Ricevuti:
    4
    Punteggio:
    0
    Home Page:
    Ultima modifica: 28 Maggio 2015
Sto caricando...

Condividi questa Pagina