Musisz zdefiniować niestandardowy układ elementów siatki, który zawiera widok tekstowy, aby przypisać tekst.
<?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>
Tutaj stworzyliśmy FrameLayout który ma ImageView ustawić, aby dopasować wymiary rodzica, będzie to ImageView który wyświetla zdjęcia. Następnie znajduje się TextView, który będzie używany do wyświetlania tytułu elementu i który jest wyrównany do dolnej krawędzi FrameLayout.
Następnie musimy edytować adapter, aby użyć tego układu elementów siatki i wyrenderować poprawne informacje.
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 powinny być ogólnie zdefiniowane w konstruktorze przy użyciu
mLayoutInflater = LayoutInflater.from(context);
co jest tu pytania? –
utwórz niestandardowy układ elementu GridView i umieść w nim obraz + TextView i zapełnij je w swoim adapterze. – hardartcore
Zgadzam się z @ Android-Developer – Chetan