Wie man GridView in ScrollView platziert

Ich muss Layout so GridView dass das gesamte Layout sollte blättern und ins Layout Ich muss die entsprechenden Inhalte in Grid Form anzeigen, so dass ich beschlossen, GridView Aber Problem ist, dass ich nicht in der Lage bin, GridView in ScrollView Ich habe Dokumentation gelesen (Dokumentation auch Sagen wir, dass wir GridView in ScrollView ) auch.But muss ich das tun, also kann mir bitte irgendeine Idee über dieses geben. Danke

  • Wie man Klingelton / Alarmton in Android spielt
  • Verwenden von onResume () zur Aktualisierung der Aktivität
  • Wie bekomme ich Spinner?
  • Dropdown nicht im Android Browser auswählen
  • Jelly Bean ruft nicht aufPrepareOptionsMenu () beim Öffnen des Menüs zum ersten Mal
  • Nicht in der Lage, Android Wear Emulator mit Gerät zu verbinden
  • Wie verweise ich von einem Bibliotheksprojekt in ein Hauptprojekt-Layout in Android?
  • Wie benutzt man android ndk, um auf die Kamera zuzugreifen
  • Android: wie man eine Taste programmatisch erstellt?
  • Android-Version von C # 's Console.WriteLine?
  • Android-Sharing-Bild funktioniert nicht
  • Android SDK und AVD Manager -Cant erstellen AVD in korrekte Datei Lage
  • 5 Solutions collect form web for “Wie man GridView in ScrollView platziert”

    Es gibt definitiv Vorteile für eine GridView neben dem inhärenten Scrollen. Zum Beispiel, eine konsistente, dynamische Layout von Zellen, die erweitern und Vertrag auf der Grundlage der Daten, die Sie in sie übergeben. Also, wenn die Leute sagen, es ist nicht gut, solch eine Funktionalität zu wünschen, ich denke, das ist falsch, weil man das dynamische Raster der Bilder (Ansichten) innerhalb einer Scroll-Ansicht wünschen könnte, aber die ganze Scrolling-Ansicht, um andere Dinge als nur das Raster zu enthalten Zellen.

    Nun, hier ist, wie du das machen kannst. Überprüfe die Antwort hier . Es ist eine erweiterbare Größe GridView, die Sie in Ihrem Projekt importieren / erstellen möchten. Was das im Grunde bedeutet, ist, dass, wie mehr Elemente hinzugefügt werden, um die GridView, wird es nur erweitern seine Höhe, im Gegensatz zu halten ihre Höhe gesetzt und mit Scrollen. Das ist genau das, was du willst

    Sobald Sie das ExpandableHeightGridView in Ihrem Projekt haben, gehen Sie zu Ihrem XML-Layout, wo Sie die GridView sein wollen. Du kannst dann so etwas machen (paraphrasierend):

     <ScrollView ...> <RelativeLayout ...> <com.example.ExpandableHeightGridView ... /> <other view items /> </RelativeLayout> </ScrollView> 

    Dann, in Ihrer Aktivität, wo Sie den GridView-Adapter setzen, möchten Sie sicherstellen, dass Sie es zu erweitern. Damit:

     ExpandableHeightGridView gridView = (ExpandableHeightGridView) findViewById(R.id.myId); gridView.setAdapter(yourAdapter); gridView.setExpanded(true); 

    Der Grund, warum Sie diese erweiterbare GridView wollen, ist, weil die Tatsache, dass ein Standard-GridView nicht erweitert wird, was es verursacht, um zu scrollen. Es haftet an einer gewissen Höhe, und dann, wenn mehr Gegenstände es an seinen Sichtgrenzen füllen, wird es scrollbar. Nun, mit diesem, wird Ihr GridView immer erweitern seine Höhe, um den Inhalt in ihm passen, so dass nie erlaubt es, seinen Scrolling-Modus eingeben. Dies ermöglicht es Ihnen, es innerhalb der ScrollView verwenden und verwenden Sie andere Ansichtselemente oben oder darunter innerhalb der ScrollView, und haben sie alle scrollen.

    Dies soll dir das Ergebnis geben, nach dem du suchst. Lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben.

    Ich weiß, ich bin spät, aber ich habe noch eine Lösung, die ich teilen muss und was einwandfrei funktioniert. Hier berechnet die Methode die GridView-Höhe anhand der Anzahl der darin enthaltenen Elemente und setzt die Höhe zur Rasterzeit zur GridView.

     public void setGridViewHeightBasedOnChildren(GridView gridView, int columns) { ListAdapter listAdapter = gridView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; int items = listAdapter.getCount(); int rows = 0; View listItem = listAdapter.getView(0, null, gridView); listItem.measure(0, 0); totalHeight = listItem.getMeasuredHeight(); float x = 1; if( items > columns ){ x = items/columns; rows = (int) (x + 1); totalHeight *= rows; } ViewGroup.LayoutParams params = gridView.getLayoutParams(); params.height = totalHeight; gridView.setLayoutParams(params); } 

    Nachdem du setAdapter auf deinem gridview aufgerufen hast, ruf einfach an

     setGridViewHeightBasedOnChildren( <yourGridView> , <no of grid view columns> ) 

    Und es wird funktionieren

    Sie können die Gridview in Ihrem xml definieren, wie Sie normalerweise tun

    Und lass den Code darauf achten. 🙂

    Ich fand einen Weg, um dem GridView eine feste Größe in ScrollView zu geben und es zu aktivieren , um es zu scrollen . Das erlaubt Ihnen, die gesamte ScrollView zu sehen, ohne alle Elemente des GridViews zu scrollen, und es macht mir mehr Sinn, dass mit einem ExpandableHeightGridView .

    Um dies zu tun, müssten Sie eine neue Klasse implementieren, die GridView erweitert und onTouchEvent () überschreibt, um requestDisallowInterceptTouchEvent (true) aufzurufen . So wird die übergeordnete Ansicht die Grid-Intercept-Touch-Ereignisse verlassen.

    GridViewScrollable.java:

     package com.example; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.GridView; public class GridViewScrollable extends GridView { public GridViewAdjuntos(Context context) { super(context); } public GridViewAdjuntos(Context context, AttributeSet attrs) { super(context, attrs); } public GridViewAdjuntos(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onTouchEvent(MotionEvent ev){ // Called when a child does not want this parent and its ancestors to intercept touch events. requestDisallowInterceptTouchEvent(true); return super.onTouchEvent(ev); } } 

    Fügen Sie es in Ihrem Layout mit den Eigenschaften und Ränder, die Sie wollen, in einem ScrollView:

     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:isScrollContainer="true" > <com.example.GridViewScrollable android:id="@+id/myGVS" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:numColumns="auto_fit" android:stretchMode="columnWidth" /> </ScrollView> 

    Und schaffe es einfach in deine Tätigkeit:

     GridViewScrollable myGridView = (GridViewScrollable) findViewById(R.id.myGVS); 

    Ich hoffe es hilft =)

    Um gridview in scrollview zu verwenden, setze scrollview android: fillViewport = "true"

    Ich weiß, dass es spät ist, hier zu antworten, aber vielleicht für einige neue Entwickler nützlich sein.

    Wenn du die Antwort von dennisdrew benutzt hast und du dich über dein Raster geteilt hast und es versteckt wird, wenn du deine Ansicht öffnest, füge einfach die letzte Zeile hinzu

     ExpandableHeightGridView gridView = (ExpandableHeightGridView) findViewById(R.id.myId); gridView.setAdapter(yourAdapter); gridView.setExpanded(true); gridView.setFocusable(false); 
    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.