2013-02-11 4 views

Antwort

7

Kurze Antwort: Ja. Sie können eine ImageView und eine ImageButton in einer GridView haben.

Lange Antwort:

Sie werden natürlich eine benutzerdefinierte GridView zu diesem Zweck erstellen müssen.

Zum Beispiel:

eine XML erstellen, die den Behälter halten GridView, sagen wir, 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> 

Und den Inhalt der GridView, erstellen Sie eine andere XML-Layout zu definieren, die das halten ImageView und die ImageButton. Sprich, 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> 

Schließlich, wenn Sie mit dem Konzept der benutzerdefinierten ListViews, mit einigen Änderungen vertraut sind, werden Sie in der Lage sein, einen benutzerdefinierten GridView zu implementieren. Wenn Sie mit der benutzerdefinierten Methode ListViews oder GridViews nicht vertraut sind, folgen Sie dieser Anleitung, um zu erfahren, wie Sie eine benutzerdefinierte GridView: http://www.coderzheaven.com/2012/02/29/custom-gridview-in-android-a-simple-example/ erstellen können. Oder verwenden Sie diese Google Search für weitere Tutorials auf dem gleichen.

Ein wichtiger Punkt hier wäre, wenn Sie die ImageButton's brauchen eine Funktion zu tun, wenn sie angeklickt wird, wird die onClickListener müssen Setup im Adapter sein.

+1

Danke, diese Seite: http://www.coderzheaven.com/2012/02/29/custom-gridview-in-android-a-simple-example/ + die Xmls, die du mir gabst, halfen mir sehr dabei meine benutzerdefinierte Gridview. Sehr gute Antwort –

+0

@rosualin: Gern geschehen. Ich bin froh, dass ich geholfen habe. :-) –

+0

Wie kann ich das relative Layout in den grid_items aufblasen? Ich bekomme diese Ausnahme: java.lang.ClassCastException: android.widget.FrameLayout $ LayoutParams kann nicht in android.widget.AbsListView $ LayoutParams – Pria

2

GridView zeigt ein Raster von Views. Es kann alles anzeigen, was View Klasse erweitert. Es kann ein LinearLayout mit einem ImageView und einem ImageButton darin zeigen.

Verwandte Themen