Вам необходимо определить настраиваемый макет элемента сетки, который содержит текстовое представление для назначения текста.
<?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>
Здесь мы создали FrameLayout, который имеет ImageView набор для соответствия размеров родителя, это будет ImageView, который отображает фотографию. Далее, есть TextView, который будет использоваться для отображения заголовка элемента и выравнивается в нижней части FrameLayout.
Далее, мы должны отредактировать ваш адаптер, чтобы использовать этот макет элемента сетки и отобразить правильную информацию.
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 должны быть определены глобально в конструкторе с помощью
mLayoutInflater = LayoutInflater.from(context);
, что есть вопросы здесь? –
создайте пользовательский макет для своего элемента GridView и поместите туда изображение + TextView и заполните его в своем адаптере. – hardartcore
согласен с @ Android-разработчиком – Chetan