È necessario disporre di LinearLayout
all'interno di SrollView
e che LinearLayout
deve avere un margine da ScrollView
. All'inizio, l'unico modo in cui potevo pensare di risolvere quel problema era avere un LinearLayout
all'interno di un altro LinearLayout
con i margini impostati su quest'ultimo layout. Essi non avrebbero funzionato se fossero impostati nel esterna LinearLayout.
Tentativo di comprendere i margini in LinearLayout all'interno di ScrollView
Esempio:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:fillViewport="true"
android:background="@color/layout_color_green">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/layout_color_yellow">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:background="@color/layout_color_blue">
</LinearLayout>
</LinearLayout>
</ScrollView>
la mia domanda è: Perché ho bisogno di fare questo?
Se ho avuto solo un LinearLayout
non ci sarebbero margini ...
Esempio:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:fillViewport="true"
android:background="@color/layout_color_green">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:background="@color/layout_color_blue">
</LinearLayout>
</ScrollView>
Poi, alla ricerca di qualche problema analogo, ho trovato un paio di layout che mi ha dato l'idea di utilizzare il padding nello ScrollView
invece del margine nello LinearLayout
. Questo risolve anche il mio problema e non ho bisogno di un LinearLayout
all'interno di un altro. È una soluzione più elegante.
Ancora, mi piacerebbe capire perché il semplice margine all'interno del LinearLayout
non funziona quando all'interno di un ScrollView
. Perché funziona bene se non è all'interno di un ScrollView
.
Qualcuno sa perché?
Ma il fatto è che i margini non sono l'unico problema.Se ho l'altezza 'LinearLayout' impostata su' wrap_content' e l'altezza di tutti i bambini è impostata su 'match_parent', i bambini saranno di fatto' fill_parent', che è il valore che deriva da 'ScrollView'. E non 'wrap_content' che è il valore di' LinearLayout', il loro genitore diretto. Anche questo problema non si verifica se uso uno 'LinearLayout' all'interno di un altro. Quindi immagino ci sia di più nel 'ScrollView' di quanto sappiamo !? –
Sì, certo. Hai forzato quel comportamento con 'android: fillViewport =" true "'. – Knickedi
Quindi, mi consiglia di andare con il padding al posto del margine e impostare tutti i child di 'LinearLayout' su' wrap_content'? –