je dois avoir un LinearLayout
dans un SrollView
et que LinearLayout
doit avoir une marge de la ScrollView
. Au début, la seule façon dont je pouvais penser à résoudre ce problème était d'avoir un LinearLayout
dans un autre LinearLayout
avec les marges définies sur cette dernière mise en page. Ils ne fonctionnent pas si elles ont été fixées dans la partie extérieure LinearLayout.
Essayer de comprendre les marges à l'intérieur d'un LinearLayout ScrollView
Exemple:
<?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>
Ma question est: Pourquoi dois-je faire?
Si je n'avais qu'un seul LinearLayout
il n'y aurait pas de marge ...
Exemple:
<?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>
Ensuite, la recherche d'une question similaire, je trouve quelques mises en page ce qui m'a donné l'idée d'utiliser le remplissage dans le ScrollView
au lieu de la marge dans le LinearLayout
. Cela résout aussi mon problème et je n'ai pas besoin d'un LinearLayout
dans un autre. C'est une solution plus élégante.
Encore, je voudrais comprendre pourquoi la marge simple à l'intérieur du LinearLayout
ne fonctionne pas à l'intérieur d'un ScrollView
. Parce que cela fonctionne bien si ce n'est pas à l'intérieur d'un ScrollView
.
Quelqu'un sait pourquoi?
Mais la chose est que les marges ne sont pas le seul problème.Si j'ai la hauteur 'LinearLayout' définie sur' wrap_content' et que tous les enfants ont la hauteur 'match_parent', les enfants seront en fait 'fill_parent', qui est la valeur qui vient de' ScrollView'. Et pas 'wrap_content' qui est la valeur de' LinearLayout', leur parent direct. Ce problème ne se produit pas non plus si j'utilise un LinearLayout dans un autre. Donc je suppose qu'il y a plus de 'ScrollView' que nous ne le savons! –
Oui bien sûr. Vous avez forcé ce comportement avec 'android: fillViewport =" true "'. – Knickedi
Alors, recommandez-vous que je pars avec le remplissage au lieu de la marge et que tous les enfants de 'LinearLayout' soient' wrap_content'? –