È necessario definire un layout di elemento griglia personalizzato che contenga una vista testuale per assegnare il testo.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/thumbnail"
android:padding="8dp"
android:scaleType="cropCenter"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_gravity="bottom"
android:textColor="@android:color/white"
android:background="#55000000" />
</FrameLayout>
Qui abbiamo creato un FrameLayout che ha l'ImageView impostato per corrispondere alle dimensioni del genitore, questo sarà l'ImageView che visualizza la foto. Successivamente, c'è un TextView che verrà usato per visualizzare il titolo dell'oggetto e che è allineato alla fine del FrameLayout.
Successivamente, è necessario modificare l'adattatore per utilizzare questo layout di elemento della griglia e visualizzare le informazioni corrette.
public View getView(int position, View convertView, ViewGroup parent) {
// Inflate the single grid item layout
if (convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.grid_item, parent, false);
}
// Set Image
ImageView thumbnail = convertView.findViewById(R.id.thumbnail);
if (thumbnail != null) {
thumbnail.setImageResource(mThumbIds[position]);
}
// Set Text
TextView title = convertView.findViewById(R.id.title);
if (title != null) {
title.setText("Image Number: " + position);
}
return convertView;
}
mLayoutInflater dovrebbe essere definito a livello globale nel costruttore utilizzando
mLayoutInflater = LayoutInflater.from(context);
qual è il domande qui? –
crea un layout personalizzato per l'elemento GridView e metti lì l'immagine + TextView e inseriscili nell'adattatore. – hardartcore
concorda con @ Sviluppatore Android – Chetan