Ho un FrameLayout
che carica Fragments
toccando le schede in un TabWidget
. Non riesco a capire come rendere l'altezza del FrameLayout
alta come il suo contenuto, in modo che l'intero contenente ScrollView
scorra insieme come uno invece di una vista a scorrimento separata.Come faccio a fare un FrameLayout a riempire l'altezza del suo genitore in modo che l'intera pagina scorra insieme?
Ecco un esempio visivo di struttura tale Fragment
s':
Come si può vedere, il layout del frame Visibile Altezza rivela solo una riga del frammento, quando in realtà, ci sono alcuni . Posso scorrere all'interno dello FrameLayout
per vedere le altre righe come sono ora, ma non è quello che sto cercando. Il FrameLayout
è costituito da un LinearLayout
contenente un GridView
con il loro layout_height
s impostato su wrap_content
.
Ho provato a codificare l'altezza dello FrameLayout
in qualcosa come 500dp e funziona benissimo tranne per il fatto che non è più dimensionato dinamicamente. Dovrei ridimensionare lo FrameLayout
a livello di codice ogni volta che una nuova immagine viene caricata nel contenuto interno? Esiste un attributo di layout che posso impostare in modo che stenda la sua altezza in modo che corrisponda al suo contenuto interno?
Ecco il mio layout di file xml:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="200dp">
<!-- CONTAINS USER INFO AND STATS -->
</RelativeLayout>
<android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:weightSum="2">
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</FrameLayout>
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
</LinearLayout>
</ScrollView>
Grazie!
Dal momento che ho intenzione di impostare una taglia su questo, ho pensato di condividere quello che ho capito finora.
Nelle anteprime, onSuccess
quando ogni immagine viene caricata, sto chiamando una funzione nel GridLayout
che contiene le immagini che conteggiano le immagini e imposta l'altezza dello GridLayout
. Funziona bene, anche se sembra che sarebbe un po 'inefficiente.
Quello che sto facendo è impostare l'altezza GridLayout
e quindi chiamare requestLayout
e invalidate
su di esso ed è genitore (s). Funziona, ma non come il caricamento delle immagini. Funzionerà se vado in una scheda diversa e ritorno alle miniature, abbastanza stranamente. Il che mi fa pensare che non sto aggiornando al momento giusto o sull'oggetto giusto.
In ogni caso, quello disse. Qualcuno sa come aumentare l'altezza di un GridLayout
espandersi per trattenere il suo contenuto (invece di scorrere) in modo da poter scorrere l'intera pagina (compresa la sezione superiore)?
Vorrei anche aggiungere il layout GridView
:
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid"
android:stretchMode="columnWidth"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="false"
android:fastScrollAlwaysVisible="false"
android:fastScrollEnabled="false"
android:numColumns="3"
android:choiceMode="none">
</GridView>
Mi piace il tuo modo di descrivere il tuo problema (intendo la foto), ottimo lavoro ... – pskink
Ti preghiamo di riconsiderare il layout: non è il modo Android! Ad esempio le schede dovrebbero rimanere in cima. – brescia123
Stai predicando al coro @ brescia123! Sto solo abbinando un design a me dato ~ – Prodikl