2013-02-11 1 views

ответ

7

Короткий ответ: Да. Вы можете получить 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.

+1

спасибо, этот сайт: http://www.coderzheaven.com/2012/02/29/custom-gridview-in-android-a-simple-example/ + xml, в котором вы мне помогли, мой пользовательский gridview. Очень хороший ответ –

+0

@rosualin: Добро пожаловать. Рад помочь. :-) –

+0

Как я могу раздуть относительный макет в grid_items? Я получаю это исключение: java.lang.ClassCastException: android.widget.FrameLayout $ LayoutParams нельзя отбрасывать в android.widget.AbsListView $ LayoutParams – Pria

2

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