Я думаю, вы должны сделать свой собственный макет.
Чтобы сделать это как здесь:
Как это выглядит
Просто создайте свой собственный макет, содержащий textView и imageView:
public class ImageWithText extends LinearLayout {
String description;
Drawable image;
public ImageWithText(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.image_with_text, this);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ImageWithText, 0, 0);
ImageView imageImageView = findViewById(R.id.image);
image = a.getDrawable(R.styleable.ImageWithText_image);
imageImageView.setImageDrawable(image);
TextView descriptionTextView = findViewById(R.id.description);
description = a.getString(R.styleable.ImageWithText_description);
descriptionTextView.setText(description);
}
Далее необходимо добавить атрибуты в values / attrs.xml:
<resources>
<declare-styleable name="ImageWithText">
<attr name="image" format="reference"/>
<attr name="description" format="string" />
</declare-styleable>
Создайте новый макет элемента:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/image_with_text"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_margin="10dp"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_launcher" />
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAlignment="center" />
И используйте это так:
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:columnCount="3">
<com.example.empty.myapplication.Layout.ImageWithText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="1"
android:layout_columnWeight="1"
android:gravity="center"
app:description="google"
app:image="@drawable/common_google_signin_btn_icon_dark" />
<com.example.empty.myapplication.Layout.ImageWithText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="1"
android:layout_columnWeight="1"
android:gravity="center"
app:description="google"
app:image="@drawable/common_google_signin_btn_icon_dark" />
<com.example.empty.myapplication.Layout.ImageWithText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="1"
android:layout_columnWeight="1"
android:gravity="center"
app:description="google"
app:image="@drawable/common_google_signin_btn_icon_dark" />
</GridLayout>