Ho dichiarato GirdView in formato xml come mostrato di seguito.In Android, come posso mantenere verticalSpacing sempre uguale a horizontalSpacing in GridView?
<GridView
android:id="@+id/movies_gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectorOnTop="true"
android:columnWidth="92dp"
android:numColumns="auto_fit"
android:stretchMode="spacingWidthUniform"
android:gravity="center_horizontal" />
intendo mostrare immagini di dimensione fissa (rettangolo verticale non quadrato) in questo GridView.
Ho impostato il columnWidth
a auto_fit
modo che lo spazio orizzontale può essere utilizzata in modo ottimale dal GridView.
secondo le dimensioni dello schermo disponibile. Ho impostato il stretchMode
su spacingWidthUniform
in modo che le colonne siano posizionate alla stessa distanza da tutti i lati.
Desidero impostare verticalSpacing
uguale a horizontalSpacing
. Non posso farlo in xml qui perché a runtime lo horizontalSpacing
dipenderà dallo spazio disponibile sullo schermo. Inoltre, quando l'orientamento del dispositivo viene modificato, lo horizontalSpacing
cambierà.
Le mie domande sono:
Come posso fare in modo che
verticalSpacing
sarà sempre pari alhorizontalSpacing
?Come può rendere
GridView
l'inizio della formattazione della prima colonna dall'inizio più il riempimento e la fine dell'ultima colonna di layout fino alla fine delGridView
meno riempimento?
EDIT 1
Ho cercato @simas soluzione di utilizzare la visualizzazione griglia personalizzata menzionato. Per questo,
Ho copiato questa classe per la mia directory di origine.
Inclusa questa vista griglia in layout xml come mostrato di seguito.
<com.aviras.ashish.popularmoviesapp.widgets.CustomGridView
android:id="@+id/movies_gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="@dimen/grid_item_width"
android:drawSelectorOnTop="true"
android:gravity="center_horizontal"
android:numColumns="auto_fit"
android:stretchMode="spacingWidthUniform"
tools:listitem="@layout/grid_item_movie_poster" />
Impostare l'adattatore a questo GridView come illustrato di seguito
CustomGridView moviesGridView = (CustomGridView) rootView.findViewById(R.id.movies_gridview); moviesGridView.setAdapter(new MoviesAdapter(rootView.getContext().getApplicationContext(), mMovies));
Esso mostra ancora la diversa spaziatura le colonne e le righe come mostrato di seguito.
EDIT 2
@simas nella seconda domanda di 'inizio layouting' intendo che il GridView
dovrebbe iniziare a tracciare la prima colonna all'inizio della GridView
ed ultima colonna della GridView
dovrebbe terminare alla fine dello GridView
. Inoltre, le colonne e le righe dovrebbero avere la stessa spaziatura. Fatemi sapere se questo chiarisce ulteriormente la mia domanda.
Grazie per questa risposta. Proveremo questo e aggiorneremo qui. –
per favore vedi la mia domanda modificata. –