Возможно ли сделать сетку, которая вместо сетки изображений, сетка изображений с маленьким кнопкой изображения под каждым из них?Gridview с макетом (imageview + imagebutton) для каждого значения
ответ
Короткий ответ: Да. Вы можете получить 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 Search для получения дополнительных уроков.
Важным моментом здесь будет, если вам нужно ImageButton's
сделать функцию, когда они щелкают, то onClickListener
необходимо будет настроить в Adapter
.
GridView
показывает сетку Views
. Он может отображать все, что распространяется на класс View
. Он может показать LinearLayout
с ImageView
и ImageButton
внутри него.
спасибо, этот сайт: http://www.coderzheaven.com/2012/02/29/custom-gridview-in-android-a-simple-example/ + xml, в котором вы мне помогли, мой пользовательский gridview. Очень хороший ответ –
@rosualin: Добро пожаловать. Рад помочь. :-) –
Как я могу раздуть относительный макет в grid_items? Я получаю это исключение: java.lang.ClassCastException: android.widget.FrameLayout $ LayoutParams нельзя отбрасывать в android.widget.AbsListView $ LayoutParams – Pria