Gridview с макетом (imageview + imagebutton) для каждого значения

Можно ли создать сетку, в которой вместо сетки картинок будет сетка картинок с маленькой кнопкой изображения под каждым из них?

2 ответа

Решение

Краткий ответ: да. Вы можете иметь ImageView и ImageButton в GridView,

Длинный ответ:

Вам, естественно, придется создать кастом GridView для этой цели.

Например:

Создайте XML, который будет содержать контейнер GridView, сказать, grid.xml:

<GridView
    android:id="@+id/gridFriends"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clipChildren="true"
    android:columnWidth="100dp"
    android:fastScrollEnabled="true"
    android:gravity="center"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth" >
</GridView>

И, чтобы определить содержание GridView создайте другой макет XML, который будет содержать ImageView и ImageButton, Сказать, grid_items.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainContainer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp" >

    <FrameLayout
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:gravity="center" >

        <ImageView
            android:id="@+id/imgProfilePicture"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop"
            android:src="@null" />

        <ImageButton
            android:id="@+id/imgbtnDemo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center"
            android:background="@null"
            android:gravity="center"
            android:src="@drawable/ic_contact_picture" >
        </ImageButton>
    </FrameLayout>

</RelativeLayout>

Наконец, если вы знакомы с концепцией обычая ListViews, с несколькими изменениями, вы сможете реализовать кастом GridView тоже. Если вы не знакомы с обычаем ListViews или же GridViews, следуйте этому руководству, чтобы увидеть, как создать пользовательский GridView: http://www.coderzheaven.com/2012/02/29/custom-gridview-in-android-a-simple-example/. Или воспользуйтесь этим поиском Google, чтобы найти дополнительные учебники по этому же вопросу.

Важным моментом здесь будет, если вам нужно ImageButton's чтобы сделать функцию, когда они нажаты, onClickListener нужно будет настроить в Adapter ,

GridView показывает сетку Views, Это может показать все, что расширяет View учебный класс. Это может показать LinearLayout с ImageView и ImageButton внутри него.

Другие вопросы по тегам