2013-12-13 6 views
13
<ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/titleBarBG" 
     android:layout_alignParentLeft="true" > 

    <RelativeLayout 
     android:id="@+id/scrollContent" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     > 

    <GridView 
     android:id="@+id/issueList" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/archiveTitle" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:background="@drawable/customshape" 
     android:numColumns="3" 
     android:overScrollMode="never" 
     android:scrollbars="none" > 
    </GridView> 

</RelativeLayout> 
</ScrollView> 

Vorrei creare un gridview che funzioni come un tavolo. Ad esempio, aumenterà la dimensione della griglia che renderà più alto il gridview. Invece di nascondere il contenuto in più, mi piacerebbe che la vista griglia visualizzasse tutto il contenuto ed espandi l'altezza quando ci sono contenuti aggiuntiviVisualizzazione griglia in base all'altezza effettiva all'interno della visualizzazione di scorrimento

Come implementarlo? grazie

+0

Perché non si desidera che lo scorrimento venga fornito da GridView? Quali caratteristiche dello scorrimento fa ScrollView ti dà che GridView non lo fa? – Nilzor

+0

Grazie, l'unico problema è l'altezza del gridview dovrebbe essere aumentare quando il numero di articolo in esso è aumentato – user782104

+2

Si potrebbe essere alla ricerca di [ExpandableHeightGridView] [1] [1]: http: // StackOverflow .com/questions/8481844/gridview-height-gets-cut/8483078 # 8483078 – Nilzor

risposta

21
public class MyGridView extends GridView { 

    public MyGridView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public MyGridView(Context context) { 
     super(context); 
    } 

    public MyGridView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, 
       MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, expandSpec); 
    } 
} 
+1

Dovresti spiegare un po '. –

+0

ottimo lavoro. Spiega per favore. Grazie –

+0

Buon lavoro amico ... Grazie per questo codice ho provato molti questo, ma non ho trovato niente finalmente ho trovato questo grazie ancora –

3

Questo è leggermente ripulito versione di: Grid of images inside ScrollView

WrappedGridView.java:

/** 
* Use this class when you want a gridview that doesn't scroll and automatically 
* wraps to the height of its contents 
*/ 
public class WrappedGridView extends GridView { 
    public WrappedGridView(Context context) { 
     super(context); 
    } 

    public WrappedGridView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public WrappedGridView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     // Calculate entire height by providing a very large height hint. 
     // View.MEASURED_SIZE_MASK represents the largest height possible. 
     int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, expandSpec); 

     ViewGroup.LayoutParams params = getLayoutParams(); 
     params.height = getMeasuredHeight(); 
    } 
} 

includere in un file XML di layout come se fosse un GridLayout. Utilizzare un adattatore per fornire visualizzazioni.

Per quanto posso dire, questa è la soluzione più semplice disponibile ora. Non c'è altra vista disponibile nel framework che gestisce il wrapping. Sarebbe bello se qualcuno fornisse una tabella elegante e ridimensionante automaticamente. La modifica di GridView.java per questo scopo potrebbe non essere una cattiva idea.

In alternativa, è possibile che uno dei progetti "FlowLayout" sia accettabile. C'è android-flowlayout e FlowLayout. Questi sono un po 'più flessibili di una semplice griglia e, presumo, un po' meno efficienti. Inoltre, non è necessario fornire loro un adattatore.

Problemi correlati