2016-04-11 5 views
1

Ich bin stecken geblieben versuchen, ein Layout von Bild-Schaltflächen ähnlich wie das Bild zur Verfügung gestellt, die vertikal scrollbar ist. Desired Android layout. Ich benutze Android Studio. Die App stürzt ab, wenn ich weitere Bildschaltflächen als 12 hinzufüge (was nur ausreicht, um einen Bildschirm zu füllen).
Ich möchte in der Lage sein, eine Anzahl von Bildschaltflächen in Reihen von 3 zu haben, die durchgescrollt werden können. Ich habe versucht, ScrollView & ListView zu verwenden, aber hatte kein Glück. Gibt es einen besseren Weg, dies zu tun?Erstellen eines Android-Layouts von Bildschaltflächen, die scrollbar sind?

+0

wo u r log/ –

+0

Was ist die Größe jedes Bildes? Was für eine Ausnahme hast du? –

+0

Verwenden Sie einen RecyclerView mit benutzerdefinierten Adapter – Jeffalee

Antwort

1

Was Sie brauchen, ist eine Rasteransicht.
Als Referenz
http://developer.android.com/guide/topics/ui/layout/gridview.html

Fügen Sie GridView in Ihrem Layout.

Verweisen Sie das GridLayout in Ihrer Java-Klasse, und legen Sie Adapter zu es fest.

GridView gridview = (GridView) findViewById(R.id.gridview); 
gridview.setAdapter(new ImageAdapter(this)); 

Adapter Class Ansichten auf Ihre Grid aufzublasen.

public class ImageAdapter extends BaseAdapter { 
private Context mContext; 

public ImageAdapter(Context c) { 
    mContext = c; 
} 

public int getCount() { 
    return mThumbIds.length; 
} 

public Object getItem(int position) { 
    return null; 
} 

public long getItemId(int position) { 
    return 0; 
} 

// create a new ImageView for each item referenced by the Adapter 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { 
     // if it's not recycled, initialize some attributes 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(8, 8, 8, 8); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    imageView.setImageResource(mThumbIds[position]); 
    return imageView; 
} 

// references to our images 
private Integer[] mThumbIds = { 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7 
}; 
} 
+1

Während Links die Frage beantworten können, ist es nicht ratsam, sie als Antworten zu posten. Wenn die Verbindung in Zukunft geändert wird, ist die Antwort nutzlos. Fügen Sie stattdessen die relevante Lösung aus dem Link in der Antwort hinzu und stellen Sie den Link als Referenz bereit. –

+0

Der Link ist von android.developer Website .. die regelmäßig Updates von Google selbst erhält. Außerdem habe ich einen Beispielcode zu meiner Antwort hinzugefügt. – Nitesh

+1

Danke, ich denke das hat mein Problem gelöst – Luke

0

Ich schlage vor, Sie Asymmetrische Gridview zu verwenden,

<com.felipecsl.asymmetricgridview.library.widget.AsymmetricGridView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/listView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

mehr für Asymmetric Gridview siehe